Compare commits

...

71 commits

Author SHA1 Message Date
db24d060b1 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-10-04 21:36:13 +02:00
Christian Schmidt
c40ab43dc7
Remove redundant title attribute (#32258) 2024-10-04 16:23:05 +00:00
Claire
51769e0670
Fix media gallery items having incorrect borders when hidden (#32257) 2024-10-04 14:55:44 +00:00
Claire
1f720366e9
Fix notification push notifications not including the author's username (#32254) 2024-10-04 14:29:23 +00:00
Matt Jankowski
ebdeac0731
Add coverage for missing status scenario in NotificationMailer (#32256) 2024-10-04 14:15:14 +00:00
Matt Jankowski
e4e07b1c34
Reduce factory usage across spec/services area (#32098) 2024-10-04 14:11:15 +00:00
Matt Jankowski
4fe7f213a6
Use async_count in more view locations (#32086) 2024-10-04 12:29:43 +00:00
Claire
77f5b127fa
Fix unsupported grouped notifications from streaming causing duplicate IDs (#32243) 2024-10-04 12:23:30 +00:00
Matt Jankowski
463f9197d8
Add regression coverage for admin reports resolution button within form (#32248) 2024-10-04 12:21:55 +00:00
Claire
49407e7623
Fix Content-Security-Policy when using sso-redirect (#32241) 2024-10-04 08:50:36 +00:00
Matt Jankowski
cf28104317
Rename preloaded models constant in cli media (#30531) 2024-10-04 08:30:08 +00:00
Matt Jankowski
82e7d53d54
Rename transformer constant in sanitizer (#30532) 2024-10-04 08:29:23 +00:00
gunchleoc
160917e718
Pluralize csv imports (#27094)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-10-04 08:19:01 +00:00
forsamori
63a959099b
Add margin-bottom to error.dialog to reduce whitespace (#25708)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-10-04 08:02:14 +00:00
renovate[bot]
12a8ac1f85
Update dependency node to 20.18 (#32244)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-04 07:57:41 +00:00
github-actions[bot]
1b247a1dc2
New Crowdin Translations (automated) (#32249)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-10-04 07:29:53 +00:00
renovate[bot]
aba888c4a6
Update dependency ffmpeg to v7.1 (#32239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-04 07:18:38 +00:00
Claire
4c0e44ebbe
Fix recently-broken admin interface buttons (#32240) 2024-10-03 16:12:15 +00:00
Matt Jankowski
cc8d723e71
Register an XML encoder for response tests (#32220) 2024-10-03 13:10:27 +00:00
Matt Jankowski
d95f6f4410
Extract ExportSummary class for account object counts (#32227) 2024-10-03 13:09:58 +00:00
Matt Jankowski
52afa94f1c
Use print_table to wrap storage output CLI (#32230) 2024-10-03 12:13:54 +00:00
renovate[bot]
1db91ab8d9
Update dependency typescript to v5.6.2 (#32165)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 09:34:04 +00:00
github-actions[bot]
fe3f5375e3
New Crowdin Translations (automated) (#32233)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-10-03 09:15:31 +00:00
renovate[bot]
d96351a87d
Update babel monorepo to v7.25.7 (#32225)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 09:05:11 +00:00
renovate[bot]
0be1d332f2
Update dependency aws-sdk-s3 to v1.167.0 (#32231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 09:04:33 +00:00
renovate[bot]
6ef510fe3f
Update dependency json-schema to v5.0.1 (#32234)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 09:04:12 +00:00
Claire
f768a6eb16
Hide badges in media gallery when media are hidden (#32224) 2024-10-02 15:51:05 +00:00
Matt Jankowski
cec8961372
Move admin action log type list generation to helper (#32178) 2024-10-02 14:47:00 +00:00
Matt Jankowski
7d6b9ccd34
Add copyable_input helper method to wrap shared options (#32119) 2024-10-02 14:45:54 +00:00
Matt Jankowski
36f9c96812
Clean up labels on development application form (#32116) 2024-10-02 14:45:12 +00:00
Matt Jankowski
b7bb850efd
Enable hostname config for all system specs (#32109) 2024-10-02 13:56:26 +00:00
Claire
f760899b04
Fix editing description of media uploads with custom thumbnails (#32221) 2024-10-02 13:29:23 +00:00
Claire
b5006539c9
Fix media uploads in composer appearing over search results in advanced interface (#32217) 2024-10-02 13:28:36 +00:00
Matt Jankowski
d270d6dd4f
Provide use_path to qr generator for svg data size reduction (#32127) 2024-10-02 13:26:46 +00:00
Matt Jankowski
2151dfb8d6
Add relevant_params to ReportFilter (matches account filter) (#32136) 2024-10-02 13:24:40 +00:00
Matt Jankowski
cf859d151b
More link/button conversion across views (#32199) 2024-10-02 13:08:40 +00:00
Matt Jankowski
1f65a95421
Remove unneeded reorder(nil) conditions (#32200) 2024-10-02 12:26:16 +00:00
Matt Jankowski
4aa26eba53
Extract WebPushRequest from push notification worker and subscription (#32208) 2024-10-02 11:11:52 +00:00
Claire
4a737a948a
Fix incorrect 'navigator' check (#32219) 2024-10-02 10:03:04 +00:00
Matt Jankowski
ebab3b80c7
Expand coverage for Export utility class (#32212) 2024-10-02 09:43:04 +00:00
Christian Schmidt
33d3ca7cf1
Support /.well-known/host-meta.json (#32206) 2024-10-02 09:23:44 +00:00
Matt Jankowski
f0716368e6
Update simplecov-html to version 0.13.1 (#32205) 2024-10-02 09:07:52 +00:00
github-actions[bot]
ea72d5ec3a
New Crowdin Translations (automated) (#32214)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-10-02 09:05:57 +00:00
Jeong Arm
66b2bc1c84
Ignore error if mentioned account was not processable (#29215)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-10-02 08:08:02 +00:00
Nick Schonning
f91f077985
Enable ESLlint no-case-declarations (#30768) 2024-10-01 16:26:30 +00:00
renovate[bot]
a2c4ba2001
Update dependency rubocop-rspec to v3.1.0 (#32202)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 15:10:56 +00:00
Matt Jankowski
4cae309f6a
Fix Rails/CreateTableWithTimestamps cop (#30836) 2024-10-01 13:56:43 +00:00
Jeong Arm
65508bb0c0
Show timestamp when the user deletes their account on admin dashboard (#25640)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-10-01 13:54:28 +00:00
Matt Jankowski
df98cf71e3
Avoid repeated icon stack in settings sidebar (#32201) 2024-10-01 13:50:20 +00:00
Matt Jankowski
f10d61bf86
Adjust spacing on setting sub-nav items when below mobile size (#32137) 2024-10-01 13:41:25 +00:00
Matt Jankowski
f73787a4b8
Fix broken border on applications list (#32147) 2024-10-01 13:38:29 +00:00
Claire
7b92cf3b47
Fix unneeded requests to blocked domains when receiving relayed signed activities from them (#31161) 2024-10-01 12:52:13 +00:00
Emelia Smith
c5f0da98e4
Add detection and download of material_symbol icons in config/navigation.rb (#31366) 2024-10-01 12:49:04 +00:00
Matt Jankowski
44071fdbae
Wrap datetime in time element with attrs (#32177) 2024-10-01 12:45:58 +00:00
Matt Jankowski
ec16ed37c3
Extract constants for header and avatar geometry (#32151) 2024-10-01 11:36:25 +00:00
Matt Jankowski
c009507912
Use button_to for method: :post links on account show page (#32154) 2024-10-01 11:14:12 +00:00
Matt Jankowski
651846c622
Only show email domain blocks MX table when some found (#32155) 2024-10-01 11:03:13 +00:00
Matt Jankowski
4b4bf82ea9
Fix nav item active highlight for some paths (#32159) 2024-10-01 10:48:27 +00:00
Matt Jankowski
489abb8173
Remove explicit put action in prefs forms (#32175) 2024-10-01 10:35:40 +00:00
Matt Jankowski
7e35bef97e
Remove explicit put action in settings forms (#32176) 2024-10-01 10:34:05 +00:00
renovate[bot]
8ae381fd04
Update dependency postcss-preset-env to v10.0.5 (#32019)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 10:04:12 +00:00
Matt Jankowski
efd3f59627
Use module: :users in routes/admin section (#30767) 2024-10-01 10:02:58 +00:00
Emelia Smith
454d21ab5a
Remove OAuth Password Grant Type support (#30960) 2024-10-01 09:56:58 +00:00
Matt Jankowski
e975b55c24
Remove WebfingerHelper module & move usage inline (#31203) 2024-10-01 09:54:42 +00:00
David Roetzel
e6cda8388c
Move OTP secret length to configuration (#32125) 2024-10-01 09:38:42 +00:00
renovate[bot]
0b89765e9a
Update RuboCop (non-major) to v1.22.1 (#31573)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 09:30:54 +00:00
Matt Jankowski
f251edfc1d
Add date_range view helper (#32187) 2024-10-01 09:30:21 +00:00
renovate[bot]
7a653001b4
Update dependency haml_lint to v0.59.0 (#32146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 09:30:09 +00:00
renovate[bot]
b7ddf45924
Update docker/dockerfile Docker tag to v1.10 (#32166)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 09:29:38 +00:00
renovate[bot]
3d943f03fd
Update dependency webmock to v3.24.0 (#32190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 09:13:33 +00:00
renovate[bot]
2829f72d16
Update dependency propshaft to v1.1.0 (#32192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 09:13:29 +00:00
210 changed files with 2543 additions and 1811 deletions

View file

@ -64,7 +64,6 @@ module.exports = defineConfig({
'indent': ['error', 2], 'indent': ['error', 2],
'jsx-quotes': ['error', 'prefer-single'], 'jsx-quotes': ['error', 'prefer-single'],
'semi': ['error', 'always'], 'semi': ['error', 'always'],
'no-case-declarations': 'off',
'no-catch-shadow': 'error', 'no-catch-shadow': 'error',
'no-console': [ 'no-console': [
'warn', 'warn',

2
.nvmrc
View file

@ -1 +1 @@
20.17 20.18

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.9 # syntax=docker/dockerfile:1.10
# This file is designed for production server deployment, not local development work # This file is designed for production server deployment, not local development work
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker # For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
@ -214,7 +214,7 @@ FROM build AS ffmpeg
# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"] # ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
# renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg # renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg
ARG FFMPEG_VERSION=7.0.2 ARG FFMPEG_VERSION=7.1
# ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"] # ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"]
ARG FFMPEG_URL=https://ffmpeg.org/releases ARG FFMPEG_URL=https://ffmpeg.org/releases

View file

@ -100,8 +100,8 @@ GEM
attr_required (1.0.2) attr_required (1.0.2)
awrence (1.2.1) awrence (1.2.1)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
aws-partitions (1.978.0) aws-partitions (1.983.0)
aws-sdk-core (3.209.0) aws-sdk-core (3.209.1)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.9) aws-sigv4 (~> 1.9)
@ -109,7 +109,7 @@ GEM
aws-sdk-kms (1.94.0) aws-sdk-kms (1.94.0)
aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-core (~> 3, >= 3.207.0)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.166.0) aws-sdk-s3 (1.167.0)
aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-core (~> 3, >= 3.207.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
@ -301,7 +301,7 @@ GEM
activesupport (>= 5.1) activesupport (>= 5.1)
haml (>= 4.0.6) haml (>= 4.0.6)
railties (>= 5.1) railties (>= 5.1)
haml_lint (0.58.0) haml_lint (0.59.0)
haml (>= 5.0) haml (>= 5.0)
parallel (~> 1.10) parallel (~> 1.10)
rainbow rainbow
@ -369,7 +369,7 @@ GEM
json-ld-preloaded (3.3.0) json-ld-preloaded (3.3.0)
json-ld (~> 3.3) json-ld (~> 3.3)
rdf (~> 3.3) rdf (~> 3.3)
json-schema (5.0.0) json-schema (5.0.1)
addressable (~> 2.8) addressable (~> 2.8)
jsonapi-renderer (0.2.2) jsonapi-renderer (0.2.2)
jwt (2.7.1) jwt (2.7.1)
@ -601,7 +601,7 @@ GEM
actionmailer (>= 3) actionmailer (>= 3)
net-smtp net-smtp
premailer (~> 1.7, >= 1.7.9) premailer (~> 1.7, >= 1.7.9)
propshaft (1.0.1) propshaft (1.1.0)
actionpack (>= 7.0.0) actionpack (>= 7.0.0)
activesupport (>= 7.0.0) activesupport (>= 7.0.0)
rack rack
@ -698,7 +698,7 @@ GEM
responders (3.1.1) responders (3.1.1)
actionpack (>= 5.2) actionpack (>= 5.2)
railties (>= 5.2) railties (>= 5.2)
rexml (3.3.7) rexml (3.3.8)
rotp (6.3.0) rotp (6.3.0)
rouge (4.3.0) rouge (4.3.0)
rpam2 (4.0.2) rpam2 (4.0.2)
@ -748,15 +748,15 @@ GEM
parser (>= 3.3.1.0) parser (>= 3.3.1.0)
rubocop-capybara (2.21.0) rubocop-capybara (2.21.0)
rubocop (~> 1.41) rubocop (~> 1.41)
rubocop-performance (1.21.1) rubocop-performance (1.22.1)
rubocop (>= 1.48.1, < 2.0) rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.25.1) rubocop-rails (2.26.2)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0) rubocop (>= 1.52.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (3.0.4) rubocop-rspec (3.1.0)
rubocop (~> 1.61) rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0) rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61) rubocop (~> 1.61)
@ -815,7 +815,7 @@ GEM
docile (~> 1.1) docile (~> 1.1)
simplecov-html (~> 0.11) simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1) simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3) simplecov-html (0.13.1)
simplecov-lcov (0.8.0) simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4) simplecov_json_formatter (0.1.4)
stackprof (0.2.26) stackprof (0.2.26)
@ -862,7 +862,7 @@ GEM
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.9.1) unf_ext (0.0.9.1)
unicode-display_width (2.5.0) unicode-display_width (2.6.0)
uri (0.13.1) uri (0.13.1)
validate_email (0.1.6) validate_email (0.1.6)
activemodel (>= 3.0) activemodel (>= 3.0)
@ -884,7 +884,7 @@ GEM
webfinger (1.2.0) webfinger (1.2.0)
activesupport activesupport
httpclient (>= 2.4) httpclient (>= 2.4)
webmock (3.23.1) webmock (3.24.0)
addressable (>= 2.8.0) addressable (>= 2.8.0)
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0) hashdiff (>= 0.4.0, < 2.0.0)

View file

@ -6,6 +6,7 @@ class Admin::AnnouncementsController < Admin::BaseController
def index def index
authorize :announcement, :index? authorize :announcement, :index?
@published_announcements_count = Announcement.published.async_count
end end
def new def new

View file

@ -6,6 +6,7 @@ class Admin::Disputes::AppealsController < Admin::BaseController
def index def index
authorize :appeal, :index? authorize :appeal, :index?
@pending_appeals_count = Appeal.pending.async_count
@appeals = filtered_appeals.page(params[:page]) @appeals = filtered_appeals.page(params[:page])
end end

View file

@ -4,6 +4,7 @@ class Admin::Trends::Links::PreviewCardProvidersController < Admin::BaseControll
def index def index
authorize :preview_card_provider, :review? authorize :preview_card_provider, :review?
@pending_preview_card_providers_count = PreviewCardProvider.unreviewed.async_count
@preview_card_providers = filtered_preview_card_providers.page(params[:page]) @preview_card_providers = filtered_preview_card_providers.page(params[:page])
@form = Trends::PreviewCardProviderBatch.new @form = Trends::PreviewCardProviderBatch.new
end end

View file

@ -4,6 +4,7 @@ class Admin::Trends::TagsController < Admin::BaseController
def index def index
authorize :tag, :review? authorize :tag, :review?
@pending_tags_count = Tag.pending_review.async_count
@tags = filtered_tags.page(params[:page]) @tags = filtered_tags.page(params[:page])
@form = Trends::TagBatch.new @form = Trends::TagBatch.new
end end

View file

@ -13,7 +13,7 @@ module WebAppControllerConcern
policy = ContentSecurityPolicy.new policy = ContentSecurityPolicy.new
if policy.sso_host.present? if policy.sso_host.present?
p.form_action policy.sso_host p.form_action policy.sso_host, -> { "https://#{request.host}/auth/auth/" }
else else
p.form_action :none p.form_action :none
end end

View file

@ -9,7 +9,7 @@ class Settings::ExportsController < Settings::BaseController
skip_before_action :require_functional! skip_before_action :require_functional!
def show def show
@export = Export.new(current_account) @export_summary = ExportSummary.new(preloaded_account)
@backups = current_user.backups @backups = current_user.backups
end end
@ -25,4 +25,15 @@ class Settings::ExportsController < Settings::BaseController
redirect_to settings_export_path redirect_to settings_export_path
end end
private
def preloaded_account
current_account.tap do |account|
ActiveRecord::Associations::Preloader.new(
records: [account],
associations: :account_stat
).call
end
end
end end

View file

@ -15,7 +15,7 @@ module Settings
end end
def create def create
session[:new_otp_secret] = User.generate_otp_secret(32) session[:new_otp_secret] = User.generate_otp_secret
redirect_to new_settings_two_factor_authentication_confirmation_path redirect_to new_settings_two_factor_authentication_confirmation_path
end end

View file

@ -7,7 +7,23 @@ module WellKnown
def show def show
@webfinger_template = "#{webfinger_url}?resource={uri}" @webfinger_template = "#{webfinger_url}?resource={uri}"
expires_in 3.days, public: true expires_in 3.days, public: true
respond_to do |format|
format.any do
render content_type: 'application/xrd+xml', formats: [:xml] render content_type: 'application/xrd+xml', formats: [:xml]
end end
format.json do
render json: {
links: [
{
rel: 'lrdd',
template: @webfinger_template,
},
],
}
end
end
end
end end
end end

View file

@ -35,4 +35,11 @@ module Admin::ActionLogsHelper
end end
end end
end end
def sorted_action_log_types
Admin::ActionLogFilter::ACTION_TYPE_MAP
.keys
.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key] }
.sort_by(&:first)
end
end end

View file

@ -18,6 +18,11 @@ module Admin::DashboardHelper
end end
end end
def date_range(range)
[l(range.first), l(range.last)]
.join(' - ')
end
def relevant_account_timestamp(account) def relevant_account_timestamp(account)
timestamp, exact = if account.user_current_sign_in_at && account.user_current_sign_in_at < 24.hours.ago timestamp, exact = 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]
@ -25,6 +30,8 @@ module Admin::DashboardHelper
[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.suspended_at.present? && account.local? && account.user.nil?
[account.suspended_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

View file

@ -1,12 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
module ApplicationHelper module ApplicationHelper
DANGEROUS_SCOPES = %w(
read
write
follow
).freeze
RTL_LOCALES = %i( RTL_LOCALES = %i(
ar ar
ckb ckb
@ -95,8 +89,11 @@ module ApplicationHelper
Rails.env.production? ? site_title : "#{site_title} (Dev)" Rails.env.production? ? site_title : "#{site_title} (Dev)"
end end
def class_for_scope(scope) def label_for_scope(scope)
'scope-danger' if DANGEROUS_SCOPES.include?(scope.to_s) safe_join [
tag.samp(scope, class: { 'scope-danger' => SessionActivation::DEFAULT_SCOPES.include?(scope.to_s) }),
tag.span(t("doorkeeper.scopes.#{scope}"), class: :hint),
]
end end
def can?(action, record) def can?(action, record)
@ -243,6 +240,10 @@ module ApplicationHelper
full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg')) full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg'))
end end
def copyable_input(options = {})
tag.input(type: :text, maxlength: 999, spellcheck: false, readonly: true, **options)
end
private private
def storage_host_var def storage_host_var

View file

@ -1,7 +0,0 @@
# frozen_string_literal: true
module WebfingerHelper
def webfinger!(uri)
Webfinger.new(uri).perform
end
end

View file

@ -37,8 +37,7 @@ export const synchronouslySubmitMarkers = createAppAsyncThunk(
}); });
return; return;
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition } else if ('sendBeacon' in navigator) {
} else if ('navigator' && 'sendBeacon' in navigator) {
// Failing that, we can use sendBeacon, but we have to encode the data as // Failing that, we can use sendBeacon, but we have to encode the data as
// FormData for DoorKeeper to recognize the token. // FormData for DoorKeeper to recognize the token.
const formData = new FormData(); const formData = new FormData();

View file

@ -106,12 +106,13 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti
dispatch(processNewNotificationForGroups(notificationJSON)); dispatch(processNewNotificationForGroups(notificationJSON));
break; break;
} }
case 'notifications_merged': case 'notifications_merged': {
const state = getState(); const state = getState();
if (state.notifications.top || !state.notifications.mounted) if (state.notifications.top || !state.notifications.mounted)
dispatch(expandNotifications({ forceLoad: true, maxId: undefined })); dispatch(expandNotifications({ forceLoad: true, maxId: undefined }));
dispatch(refreshStaleNotificationGroups()); dispatch(refreshStaleNotificationGroups());
break; break;
}
case 'conversation': case 'conversation':
// @ts-expect-error // @ts-expect-error
dispatch(updateConversations(JSON.parse(data.payload))); dispatch(updateConversations(JSON.parse(data.payload)));

View file

@ -196,7 +196,7 @@ class Item extends PureComponent {
{visible && thumbnail} {visible && thumbnail}
{badges && ( {visible && badges && (
<div className='media-gallery__item__badges'> <div className='media-gallery__item__badges'>
{badges} {badges}
</div> </div>
@ -336,14 +336,14 @@ class MediaGallery extends PureComponent {
return ( return (
<div className={`media-gallery media-gallery--layout-${size}`} style={style} ref={this.handleRef}> <div className={`media-gallery media-gallery--layout-${size}`} style={style} ref={this.handleRef}>
{children}
{(!visible || uncached) && ( {(!visible || uncached) && (
<div className={classNames('spoiler-button', { 'spoiler-button--click-thru': uncached })}> <div className={classNames('spoiler-button', { 'spoiler-button--click-thru': uncached })}>
{spoilerButton} {spoilerButton}
</div> </div>
)} )}
{children}
{(visible && !uncached) && ( {(visible && !uncached) && (
<div className='media-gallery__actions'> <div className='media-gallery__actions'>
<button className='media-gallery__actions__pill' onClick={this.handleOpen}><FormattedMessage id='media_gallery.hide' defaultMessage='Hide' /></button> <button className='media-gallery__actions__pill' onClick={this.handleOpen}><FormattedMessage id='media_gallery.hide' defaultMessage='Hide' /></button>

View file

@ -15,7 +15,7 @@ const ColumnLink = ({ icon, activeIcon, iconComponent, activeIconComponent, text
if (href) { if (href) {
return ( return (
<a href={href} className={className} data-method={method} title={text} {...other}> <a href={href} className={className} data-method={method} {...other}>
{active ? activeIconElement : iconElement} {active ? activeIconElement : iconElement}
<span>{text}</span> <span>{text}</span>
{badgeElement} {badgeElement}
@ -23,7 +23,7 @@ const ColumnLink = ({ icon, activeIcon, iconComponent, activeIconComponent, text
); );
} else { } else {
return ( return (
<NavLink to={to} className={className} title={text} exact {...other}> <NavLink to={to} className={className} exact {...other}>
{active ? activeIconElement : iconElement} {active ? activeIconElement : iconElement}
<span>{text}</span> <span>{text}</span>
{badgeElement} {badgeElement}

View file

@ -85,6 +85,7 @@
"alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.rate_limited.title": "Cyfradd gyfyngedig",
"alert.unexpected.message": "Digwyddodd gwall annisgwyl.", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
"alert.unexpected.title": "Wps!", "alert.unexpected.title": "Wps!",
"alt_text_badge.title": "Testun Amgen",
"announcement.announcement": "Cyhoeddiad", "announcement.announcement": "Cyhoeddiad",
"attachments_list.unprocessed": "(heb eu prosesu)", "attachments_list.unprocessed": "(heb eu prosesu)",
"audio.hide": "Cuddio sain", "audio.hide": "Cuddio sain",
@ -221,6 +222,7 @@
"domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.", "domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.",
"domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.", "domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.",
"domain_block_modal.title": "Blocio parth?", "domain_block_modal.title": "Blocio parth?",
"domain_block_modal.you_will_lose_relationships": "Byddwch yn colli'r holl ddilynwyr a phobl rydych chi'n eu dilyn o'r gweinydd hwn.",
"domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.", "domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.",
"domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.", "domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.",
"domain_pill.activitypub_like_language": "Mae ActivityPub fel yr iaith y mae Mastodon yn ei siarad â rhwydweithiau cymdeithasol eraill.", "domain_pill.activitypub_like_language": "Mae ActivityPub fel yr iaith y mae Mastodon yn ei siarad â rhwydweithiau cymdeithasol eraill.",
@ -849,6 +851,11 @@
"upload_error.poll": "Nid oes modd llwytho ffeiliau â phleidleisiau.", "upload_error.poll": "Nid oes modd llwytho ffeiliau â phleidleisiau.",
"upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw", "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw",
"upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
"upload_form.drag_and_drop.instructions": "I godi atodiad cyfryngau, pwyswch y space neu enter. Wrth lusgo, defnyddiwch y bysellau saeth i symud yr atodiad cyfryngau i unrhyw gyfeiriad penodol. Pwyswch space neu enter eto i ollwng yr atodiad cyfryngau yn ei safle newydd, neu pwyswch escape i ddiddymu.",
"upload_form.drag_and_drop.on_drag_cancel": "Cafodd llusgo ei ddiddymu. Cafodd atodiad cyfryngau {item} ei ollwng.",
"upload_form.drag_and_drop.on_drag_end": "Cafodd atodiad cyfryngau {item} ei ollwng.",
"upload_form.drag_and_drop.on_drag_over": "Symudwyd atodiad cyfryngau {item}.",
"upload_form.drag_and_drop.on_drag_start": "Atodiad cyfryngau godwyd {item}.",
"upload_form.edit": "Golygu", "upload_form.edit": "Golygu",
"upload_form.thumbnail": "Newid llun bach", "upload_form.thumbnail": "Newid llun bach",
"upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg", "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg",

View file

@ -41,7 +41,7 @@
"account.go_to_profile": "Profil aufrufen", "account.go_to_profile": "Profil aufrufen",
"account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden", "account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden",
"account.in_memoriam": "Zum Andenken.", "account.in_memoriam": "Zum Andenken.",
"account.joined_short": "Beigetreten", "account.joined_short": "Mitglied seit",
"account.languages": "Ausgewählte Sprachen ändern", "account.languages": "Ausgewählte Sprachen ändern",
"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.",
@ -534,7 +534,7 @@
"notification.relationships_severance_event.domain_block": "Ein Admin von {from} hat {target} blockiert darunter {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst.", "notification.relationships_severance_event.domain_block": "Ein Admin von {from} hat {target} blockiert darunter {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst.",
"notification.relationships_severance_event.learn_more": "Mehr erfahren", "notification.relationships_severance_event.learn_more": "Mehr erfahren",
"notification.relationships_severance_event.user_domain_block": "Du hast {target} blockiert {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst, wurden entfernt.", "notification.relationships_severance_event.user_domain_block": "Du hast {target} blockiert {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst, wurden entfernt.",
"notification.status": "{name} hat gerade etwas gepostet", "notification.status": "{name} veröffentlichte gerade",
"notification.update": "{name} bearbeitete einen Beitrag", "notification.update": "{name} bearbeitete einen Beitrag",
"notification_requests.accept": "Genehmigen", "notification_requests.accept": "Genehmigen",
"notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen …} other {# Anfragen genehmigen …}}", "notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen …} other {# Anfragen genehmigen …}}",

View file

@ -516,6 +516,7 @@
"notification.label.private_reply": "Private reply", "notification.label.private_reply": "Private reply",
"notification.label.reply": "Reply", "notification.label.reply": "Reply",
"notification.mention": "Mention", "notification.mention": "Mention",
"notification.mentioned_you": "{name} mentioned you",
"notification.moderation-warning.learn_more": "Learn more", "notification.moderation-warning.learn_more": "Learn more",
"notification.moderation_warning": "You have received a moderation warning", "notification.moderation_warning": "You have received a moderation warning",
"notification.moderation_warning.action_delete_statuses": "Some of your posts have been removed.", "notification.moderation_warning.action_delete_statuses": "Some of your posts have been removed.",

View file

@ -22,10 +22,10 @@
"account.cancel_follow_request": "Nuligi peton por sekvado", "account.cancel_follow_request": "Nuligi peton por sekvado",
"account.copy": "Kopii ligilon al profilo", "account.copy": "Kopii ligilon al profilo",
"account.direct": "Private mencii @{name}", "account.direct": "Private mencii @{name}",
"account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaĝas", "account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas",
"account.domain_blocked": "Domajno blokita", "account.domain_blocked": "Domajno blokita",
"account.edit_profile": "Redakti la profilon", "account.edit_profile": "Redakti la profilon",
"account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", "account.enable_notifications": "Sciigu min kiam @{name} afiŝos",
"account.endorse": "Rekomendi ĉe via profilo", "account.endorse": "Rekomendi ĉe via profilo",
"account.featured_tags.last_status_at": "Lasta afîŝo je {date}", "account.featured_tags.last_status_at": "Lasta afîŝo je {date}",
"account.featured_tags.last_status_never": "Neniu afiŝo", "account.featured_tags.last_status_never": "Neniu afiŝo",
@ -49,14 +49,14 @@
"account.mention": "Mencii @{name}", "account.mention": "Mencii @{name}",
"account.moved_to": "{name} indikis, ke ria nova konto estas nun:", "account.moved_to": "{name} indikis, ke ria nova konto estas nun:",
"account.mute": "Silentigi @{name}", "account.mute": "Silentigi @{name}",
"account.mute_notifications_short": "Silentigu Sciigojn", "account.mute_notifications_short": "Silentigu sciigojn",
"account.mute_short": "Silentigu", "account.mute_short": "Silentigu",
"account.muted": "Silentigita", "account.muted": "Silentigita",
"account.mutual": "Reciproka", "account.mutual": "Reciproka",
"account.no_bio": "Neniu priskribo estas provizita.", "account.no_bio": "Neniu priskribo estas provizita.",
"account.open_original_page": "Malfermi la originalan paĝon", "account.open_original_page": "Malfermi la originalan paĝon",
"account.posts": "Afiŝoj", "account.posts": "Afiŝoj",
"account.posts_with_replies": "Mesaĝoj kaj respondoj", "account.posts_with_replies": "Afiŝoj kaj respondoj",
"account.report": "Raporti @{name}", "account.report": "Raporti @{name}",
"account.requested": "Atendo de aprobo. Klaku por nuligi la peton por sekvado", "account.requested": "Atendo de aprobo. Klaku por nuligi la peton por sekvado",
"account.requested_follow": "{name} petis sekvi vin", "account.requested_follow": "{name} petis sekvi vin",
@ -69,7 +69,7 @@
"account.unendorse": "Ne plu rekomendi ĉe la profilo", "account.unendorse": "Ne plu rekomendi ĉe la profilo",
"account.unfollow": "Ĉesi sekvi", "account.unfollow": "Ĉesi sekvi",
"account.unmute": "Ne plu silentigi @{name}", "account.unmute": "Ne plu silentigi @{name}",
"account.unmute_notifications_short": "Malsilentigu Sciigojn", "account.unmute_notifications_short": "Malsilentigu sciigojn",
"account.unmute_short": "Ne plu silentigi", "account.unmute_short": "Ne plu silentigi",
"account_note.placeholder": "Alklaku por aldoni noton", "account_note.placeholder": "Alklaku por aldoni noton",
"admin.dashboard.daily_retention": "Uzantoretenprocento lau tag post registro", "admin.dashboard.daily_retention": "Uzantoretenprocento lau tag post registro",
@ -81,7 +81,7 @@
"admin.impact_report.instance_followers": "Sekvantojn niaj uzantoj perdus", "admin.impact_report.instance_followers": "Sekvantojn niaj uzantoj perdus",
"admin.impact_report.instance_follows": "Sekvantojn ties uzantoj perdus", "admin.impact_report.instance_follows": "Sekvantojn ties uzantoj perdus",
"admin.impact_report.title": "Influa reporto", "admin.impact_report.title": "Influa reporto",
"alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.", "alert.rate_limited.message": "Bonvolu reprovi poste {retry_time, time, medium}.",
"alert.rate_limited.title": "Mesaĝkvante limigita", "alert.rate_limited.title": "Mesaĝkvante limigita",
"alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.message": "Neatendita eraro okazis.",
"alert.unexpected.title": "Aj!", "alert.unexpected.title": "Aj!",
@ -163,7 +163,7 @@
"compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton",
"compose_form.poll.type": "Stilo", "compose_form.poll.type": "Stilo",
"compose_form.publish": "Afiŝo", "compose_form.publish": "Afiŝo",
"compose_form.publish_form": "Afiŝi", "compose_form.publish_form": "Nova afiŝo",
"compose_form.reply": "Respondi", "compose_form.reply": "Respondi",
"compose_form.save_changes": "Ĝisdatigi", "compose_form.save_changes": "Ĝisdatigi",
"compose_form.spoiler.marked": "Forigi la averton de enhavo", "compose_form.spoiler.marked": "Forigi la averton de enhavo",
@ -173,7 +173,7 @@
"confirmations.block.confirm": "Bloki", "confirmations.block.confirm": "Bloki",
"confirmations.delete.confirm": "Forigi", "confirmations.delete.confirm": "Forigi",
"confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun afiŝon?", "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun afiŝon?",
"confirmations.delete.title": "Ĉu forigi Afiŝon?", "confirmations.delete.title": "Ĉu forigi afiŝon?",
"confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.confirm": "Forigi",
"confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?",
"confirmations.delete_list.title": "Ĉu forigi liston?", "confirmations.delete_list.title": "Ĉu forigi liston?",
@ -213,9 +213,9 @@
"dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.", "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.",
"dismissable_banner.dismiss": "Eksigi", "dismissable_banner.dismiss": "Eksigi",
"dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.", "dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.",
"dismissable_banner.explore_statuses": "Ĉi tioj estas afiŝoj de socia reto kiu populariĝas hodiau.", "dismissable_banner.explore_statuses": "Ĉi tiuj estas afiŝoj de la tuta socia reto, kiuj populariĝas hodiaŭ. Pli novaj afiŝoj kun pli da diskonigoj kaj plej ŝatataj estas rangigitaj pli alte.",
"dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.", "dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.",
"dismissable_banner.public_timeline": "Ĉi tioj estas plej lastaj publikaj afiŝoj de personoj ĉe socia reto kiu personoj ĉe {domain} sekvas.", "dismissable_banner.public_timeline": "Ĉi tiuj estas la plej lastatempaj publikaj afiŝoj de homoj en la socia reto, kiujn homoj sur {domain} sekvas.",
"domain_block_modal.block": "Bloki servilon", "domain_block_modal.block": "Bloki servilon",
"domain_block_modal.block_account_instead": "Bloki @{name} anstataŭe", "domain_block_modal.block_account_instead": "Bloki @{name} anstataŭe",
"domain_block_modal.they_can_interact_with_old_posts": "Homoj de ĉi tiu servilo povas interagi kun viaj malnovaj afiŝoj.", "domain_block_modal.they_can_interact_with_old_posts": "Homoj de ĉi tiu servilo povas interagi kun viaj malnovaj afiŝoj.",
@ -265,8 +265,8 @@
"empty_column.direct": "Vi ankoraŭ ne havas privatan mencion. Kiam vi sendos aŭ ricevos iun, tiu aperos ĉi tie.", "empty_column.direct": "Vi ankoraŭ ne havas privatan mencion. Kiam vi sendos aŭ ricevos iun, tiu aperos ĉi tie.",
"empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.",
"empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!",
"empty_column.favourited_statuses": "Vi ankoraŭ ne havas stelumitan afiŝon.", "empty_column.favourited_statuses": "Vi ankoraŭ ne havas plej ŝatatajn afiŝojn. Kiam vi ŝatatas unu, ĝi aperos ĉi tie.",
"empty_column.favourites": "Ankoraŭ neniu stelumis tiun afiŝon.", "empty_column.favourites": "Neniu ankoraŭ ŝatis ĉi tiun afiŝon. Kiam iu ŝatos ĝin, ili aperos ĉi tie.",
"empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.",
"empty_column.followed_tags": "Vi ankoraŭ ne sekvas iujn kradvortojn. Kiam vi faras, ili aperos ĉi tie.", "empty_column.followed_tags": "Vi ankoraŭ ne sekvas iujn kradvortojn. Kiam vi faras, ili aperos ĉi tie.",
"empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.",
@ -296,7 +296,7 @@
"filter_modal.added.review_and_configure": "Por kontroli kaj pli modifi ĉi tiu filtrilkategorio, iru al la {settings_link}.", "filter_modal.added.review_and_configure": "Por kontroli kaj pli modifi ĉi tiu filtrilkategorio, iru al la {settings_link}.",
"filter_modal.added.review_and_configure_title": "Filtrilopcioj", "filter_modal.added.review_and_configure_title": "Filtrilopcioj",
"filter_modal.added.settings_link": "opciopaĝo", "filter_modal.added.settings_link": "opciopaĝo",
"filter_modal.added.short_explanation": "Ĉi tiu mesaĝo aldonitas al la filtrilkategorio: {title}.", "filter_modal.added.short_explanation": "Ĉi tiu afiŝo aldonitas al la filtrilkategorio: {title}.",
"filter_modal.added.title": "Filtrilo aldonita!", "filter_modal.added.title": "Filtrilo aldonita!",
"filter_modal.select_filter.context_mismatch": "ne kongruas la kuntekston", "filter_modal.select_filter.context_mismatch": "ne kongruas la kuntekston",
"filter_modal.select_filter.expired": "eksvalidiĝinta", "filter_modal.select_filter.expired": "eksvalidiĝinta",
@ -304,7 +304,7 @@
"filter_modal.select_filter.search": "Serĉi aŭ krei", "filter_modal.select_filter.search": "Serĉi aŭ krei",
"filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan", "filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan",
"filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon", "filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon",
"filter_modal.title.status": "Filtri mesaĝon", "filter_modal.title.status": "Filtri afiŝon",
"filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”", "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”",
"filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas", "filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas",
"filtered_notifications_banner.title": "Filtritaj sciigoj", "filtered_notifications_banner.title": "Filtritaj sciigoj",
@ -351,7 +351,7 @@
"hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno",
"hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}", "hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}",
"hashtag.counter_by_uses": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}", "hashtag.counter_by_uses": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}",
"hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiau", "hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiaŭ",
"hashtag.follow": "Sekvi la kradvorton", "hashtag.follow": "Sekvi la kradvorton",
"hashtag.unfollow": "Ne plu sekvi la kradvorton", "hashtag.unfollow": "Ne plu sekvi la kradvorton",
"hashtags.and_other": "…kaj {count, plural,other {# pli}}", "hashtags.and_other": "…kaj {count, plural,other {# pli}}",
@ -382,9 +382,9 @@
"ignore_notifications_modal.not_following_title": "Ĉu ignori sciigojn de homoj, kiujn vi ne sekvas?", "ignore_notifications_modal.not_following_title": "Ĉu ignori sciigojn de homoj, kiujn vi ne sekvas?",
"ignore_notifications_modal.private_mentions_title": "Ĉu ignori sciigojn de nepetitaj privataj mencioj?", "ignore_notifications_modal.private_mentions_title": "Ĉu ignori sciigojn de nepetitaj privataj mencioj?",
"interaction_modal.description.favourite": "Per konto ĉe Mastodon, vi povas stelumiti ĉi tiun afiŝon por sciigi la afiŝanton ke vi aprezigas ŝin kaj konservas por la estonteco.", "interaction_modal.description.favourite": "Per konto ĉe Mastodon, vi povas stelumiti ĉi tiun afiŝon por sciigi la afiŝanton ke vi aprezigas ŝin kaj konservas por la estonteco.",
"interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povos sekvi {name} por vidi ties mesaĝojn en via hejmo.", "interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povas sekvi {name} por ricevi iliajn afiŝojn en via hejma fluo.",
"interaction_modal.description.reblog": "Kun konto ĉe Mastodon, vi povas diskonigi ĉi tiun afiŝon, por ke viaj propraj sekvantoj vidu ĝin.", "interaction_modal.description.reblog": "Kun konto ĉe Mastodon, vi povas diskonigi ĉi tiun afiŝon, por ke viaj propraj sekvantoj vidu ĝin.",
"interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu mesaĝo.", "interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu afiŝo.",
"interaction_modal.login.action": "Prenu min hejmen", "interaction_modal.login.action": "Prenu min hejmen",
"interaction_modal.login.prompt": "Domajno de via hejma servilo, ekz. mastodon.social", "interaction_modal.login.prompt": "Domajno de via hejma servilo, ekz. mastodon.social",
"interaction_modal.no_account_yet": "Ĉu ne estas ĉe Mastodon?", "interaction_modal.no_account_yet": "Ĉu ne estas ĉe Mastodon?",
@ -402,12 +402,12 @@
"keyboard_shortcuts.back": "reveni", "keyboard_shortcuts.back": "reveni",
"keyboard_shortcuts.blocked": "Malfermi la liston de blokitaj uzantoj", "keyboard_shortcuts.blocked": "Malfermi la liston de blokitaj uzantoj",
"keyboard_shortcuts.boost": "Diskonigi la mesaĝon", "keyboard_shortcuts.boost": "Diskonigi la mesaĝon",
"keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.column": "Fokusi kolumnon",
"keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.compose": "enfokusigi la tekstujon",
"keyboard_shortcuts.description": "Priskribo", "keyboard_shortcuts.description": "Priskribo",
"keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj", "keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj",
"keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.down": "iri suben en la listo",
"keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.enter": "Malfermi afiŝon",
"keyboard_shortcuts.favourite": "Stelumi afiŝon", "keyboard_shortcuts.favourite": "Stelumi afiŝon",
"keyboard_shortcuts.favourites": "Malfermi la liston de la stelumoj", "keyboard_shortcuts.favourites": "Malfermi la liston de la stelumoj",
"keyboard_shortcuts.federated": "Malfermi la frataran templinion", "keyboard_shortcuts.federated": "Malfermi la frataran templinion",
@ -421,16 +421,16 @@
"keyboard_shortcuts.my_profile": "malfermi vian profilon", "keyboard_shortcuts.my_profile": "malfermi vian profilon",
"keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj",
"keyboard_shortcuts.open_media": "Malfermi plurmedion", "keyboard_shortcuts.open_media": "Malfermi plurmedion",
"keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj", "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston",
"keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro",
"keyboard_shortcuts.reply": "respondi", "keyboard_shortcuts.reply": "Respondu al afiŝo",
"keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado", "keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado",
"keyboard_shortcuts.search": "enfokusigi la serĉilon", "keyboard_shortcuts.search": "enfokusigi la serĉilon",
"keyboard_shortcuts.spoilers": "Montri/kaŝi la kampon de averto de enhavo (\"CW\")", "keyboard_shortcuts.spoilers": "Montri/kaŝi la kampon de averto de enhavo (\"CW\")",
"keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»",
"keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ la averto de enhavo (\"CW\")", "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ la averto de enhavo (\"CW\")",
"keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi plurmedion", "keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi plurmedion",
"keyboard_shortcuts.toot": "Krei novan mesaĝon", "keyboard_shortcuts.toot": "Komencu novan afiŝon",
"keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon",
"keyboard_shortcuts.up": "iri supren en la listo", "keyboard_shortcuts.up": "iri supren en la listo",
"lightbox.close": "Fermi", "lightbox.close": "Fermi",
@ -476,9 +476,9 @@
"navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.blocks": "Blokitaj uzantoj",
"navigation_bar.bookmarks": "Legosignoj", "navigation_bar.bookmarks": "Legosignoj",
"navigation_bar.community_timeline": "Loka templinio", "navigation_bar.community_timeline": "Loka templinio",
"navigation_bar.compose": "Skribi novan mesaĝon", "navigation_bar.compose": "Redakti novan afiŝon",
"navigation_bar.direct": "Privataj mencioj", "navigation_bar.direct": "Privataj mencioj",
"navigation_bar.discover": "Esplori", "navigation_bar.discover": "Malkovri",
"navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.domain_blocks": "Blokitaj domajnoj",
"navigation_bar.explore": "Esplori", "navigation_bar.explore": "Esplori",
"navigation_bar.favourites": "Stelumoj", "navigation_bar.favourites": "Stelumoj",
@ -487,12 +487,12 @@
"navigation_bar.followed_tags": "Sekvataj kradvortoj", "navigation_bar.followed_tags": "Sekvataj kradvortoj",
"navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj",
"navigation_bar.lists": "Listoj", "navigation_bar.lists": "Listoj",
"navigation_bar.logout": "Adiaŭi", "navigation_bar.logout": "Elsaluti",
"navigation_bar.moderation": "Modereco", "navigation_bar.moderation": "Modereco",
"navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.mutes": "Silentigitaj uzantoj",
"navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.", "navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.",
"navigation_bar.personal": "Persone", "navigation_bar.personal": "Persone",
"navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.pins": "Alpinglitaj afiŝoj",
"navigation_bar.preferences": "Preferoj", "navigation_bar.preferences": "Preferoj",
"navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.public_timeline": "Fratara templinio",
"navigation_bar.search": "Serĉi", "navigation_bar.search": "Serĉi",
@ -572,7 +572,7 @@
"notifications.column_settings.reblog": "Diskonigoj:", "notifications.column_settings.reblog": "Diskonigoj:",
"notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.show": "Montri en kolumno",
"notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.sound": "Eligi sonon",
"notifications.column_settings.status": "Novaj mesaĝoj:", "notifications.column_settings.status": "Novaj afiŝoj:",
"notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj",
"notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn", "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn",
"notifications.column_settings.update": "Redaktoj:", "notifications.column_settings.update": "Redaktoj:",
@ -660,7 +660,7 @@
"poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}", "poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}",
"poll_button.add_poll": "Aldoni balotenketon", "poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon", "poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaĝan privatecon", "privacy.change": "Ŝanĝu afiŝan privatecon",
"privacy.direct.long": "Ĉiuj menciitaj en la afiŝo", "privacy.direct.long": "Ĉiuj menciitaj en la afiŝo",
"privacy.direct.short": "Specifaj homoj", "privacy.direct.short": "Specifaj homoj",
"privacy.private.long": "Nur viaj sekvantoj", "privacy.private.long": "Nur viaj sekvantoj",
@ -775,13 +775,13 @@
"sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi", "sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi",
"status.admin_account": "Malfermi fasadon de moderigado por @{name}", "status.admin_account": "Malfermi fasadon de moderigado por @{name}",
"status.admin_domain": "Malfermu moderigan interfacon por {domain}", "status.admin_domain": "Malfermu moderigan interfacon por {domain}",
"status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", "status.admin_status": "Malfermi ĉi tiun afiŝon en la kontrola interfaco",
"status.block": "Bloki @{name}", "status.block": "Bloki @{name}",
"status.bookmark": "Aldoni al la legosignoj", "status.bookmark": "Aldoni al la legosignoj",
"status.cancel_reblog_private": "Ne plu diskonigi", "status.cancel_reblog_private": "Ne plu diskonigi",
"status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi", "status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi",
"status.continued_thread": "Daŭrigis fadenon", "status.continued_thread": "Daŭrigis fadenon",
"status.copy": "Kopii la ligilon al la mesaĝo", "status.copy": "Kopii la ligilon al la afiŝo",
"status.delete": "Forigi", "status.delete": "Forigi",
"status.detailed_status": "Detala konversacia vido", "status.detailed_status": "Detala konversacia vido",
"status.direct": "Private mencii @{name}", "status.direct": "Private mencii @{name}",
@ -803,9 +803,9 @@
"status.more": "Pli", "status.more": "Pli",
"status.mute": "Silentigi @{name}", "status.mute": "Silentigi @{name}",
"status.mute_conversation": "Silentigi konversacion", "status.mute_conversation": "Silentigi konversacion",
"status.open": "Disvolvi la mesaĝon", "status.open": "Pligrandigu ĉi tiun afiŝon",
"status.pin": "Alpingli al la profilo", "status.pin": "Alpingli al la profilo",
"status.pinned": "Alpinglita mesaĝo", "status.pinned": "Alpinglita afiŝo",
"status.read_more": "Legi pli", "status.read_more": "Legi pli",
"status.reblog": "Diskonigi", "status.reblog": "Diskonigi",
"status.reblog_private": "Diskonigi kun la sama videbleco", "status.reblog_private": "Diskonigi kun la sama videbleco",

View file

@ -193,7 +193,7 @@
"confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?", "confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?",
"confirmations.reply.title": "Editar a publicación?", "confirmations.reply.title": "Editar a publicación?",
"confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.confirm": "Deixar de seguir",
"confirmations.unfollow.message": "Desexas deixar de seguir a {name}?", "confirmations.unfollow.message": "Tes certeza de querer deixar de seguir a {name}?",
"confirmations.unfollow.title": "Deixar de seguir á usuaria?", "confirmations.unfollow.title": "Deixar de seguir á usuaria?",
"content_warning.hide": "Agochar publicación", "content_warning.hide": "Agochar publicación",
"content_warning.show": "Mostrar igualmente", "content_warning.show": "Mostrar igualmente",

View file

@ -85,6 +85,7 @@
"alert.rate_limited.title": "חלה הגבלה על קצב התעבורה", "alert.rate_limited.title": "חלה הגבלה על קצב התעבורה",
"alert.unexpected.message": "אירעה שגיאה בלתי צפויה.", "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.",
"alert.unexpected.title": "אופס!", "alert.unexpected.title": "אופס!",
"alt_text_badge.title": "כיתוב חלופי",
"announcement.announcement": "הכרזה", "announcement.announcement": "הכרזה",
"attachments_list.unprocessed": "(לא מעובד)", "attachments_list.unprocessed": "(לא מעובד)",
"audio.hide": "השתק", "audio.hide": "השתק",
@ -221,6 +222,8 @@
"domain_block_modal.they_cant_follow": "משתמש משרת זה לא יכול לעקוב אחריך.", "domain_block_modal.they_cant_follow": "משתמש משרת זה לא יכול לעקוב אחריך.",
"domain_block_modal.they_wont_know": "הם לא ידעו כי נחסמו.", "domain_block_modal.they_wont_know": "הם לא ידעו כי נחסמו.",
"domain_block_modal.title": "לחסום שרת?", "domain_block_modal.title": "לחסום שרת?",
"domain_block_modal.you_will_lose_num_followers": "{followersCount, plural,one {יאבד לך עוקב אחד}other {יאבדו לך {followersCountDisplay} עוקבים}} {followingCount, plural,one {ונעקב אחד}other {ו־{followingCountDisplay} נעקבים}}.",
"domain_block_modal.you_will_lose_relationships": "יאבדו לך כל העוקבים והנעקבים משרת זה.",
"domain_block_modal.you_wont_see_posts": "לא תוכלו לראות הודעות ממשתמשים על שרת זה.", "domain_block_modal.you_wont_see_posts": "לא תוכלו לראות הודעות ממשתמשים על שרת זה.",
"domain_pill.activitypub_lets_connect": "מאפשר לך להתחבר ולהתרועע עם אחרים לא רק במסטודון, אלא גם ביישומים חברתיים שונים אחרים.", "domain_pill.activitypub_lets_connect": "מאפשר לך להתחבר ולהתרועע עם אחרים לא רק במסטודון, אלא גם ביישומים חברתיים שונים אחרים.",
"domain_pill.activitypub_like_language": "אקטיביטיפאב היא למעשה השפה בה מסטודון מדבר עם רשתות חברתיות אחרות.", "domain_pill.activitypub_like_language": "אקטיביטיפאב היא למעשה השפה בה מסטודון מדבר עם רשתות חברתיות אחרות.",
@ -849,6 +852,11 @@
"upload_error.poll": "לא ניתן להעלות קובץ עם סקר.", "upload_error.poll": "לא ניתן להעלות קובץ עם סקר.",
"upload_form.audio_description": "תאר/י עבור לקויי שמיעה", "upload_form.audio_description": "תאר/י עבור לקויי שמיעה",
"upload_form.description": "תיאור לכבדי ראיה", "upload_form.description": "תיאור לכבדי ראיה",
"upload_form.drag_and_drop.instructions": "כדי לבחור קובץ מוצמד, יש ללחוץ על מקש רווח או אנטר. בעת הגרירה, השתמשו במקשי החיצים כדי להזיז את הקובץ המוצמד בכל כיוון. לחצו רווח או אנטר בשנית כדי לעזוב את הקובץ במקומו החדש, או לחצו אסקייפ לביטול.",
"upload_form.drag_and_drop.on_drag_cancel": "הגרירה בוטלה. קובץ המדיה {item} נעזב.",
"upload_form.drag_and_drop.on_drag_end": "קובץ המדיה {item} נעזב.",
"upload_form.drag_and_drop.on_drag_over": "קובץ המדיה {item} הוזז.",
"upload_form.drag_and_drop.on_drag_start": "קובץ המדיה {item} נבחר.",
"upload_form.edit": "עריכה", "upload_form.edit": "עריכה",
"upload_form.thumbnail": "שנה/י תמונה ממוזערת", "upload_form.thumbnail": "שנה/י תמונה ממוזערת",
"upload_form.video_description": "תאר/י עבור לקויי שמיעה ולקויי ראייה", "upload_form.video_description": "תאר/י עבור לקויי שמיעה ולקויי ראייה",

View file

@ -852,8 +852,8 @@
"upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.",
"upload_form.audio_description": "Leírás siket vagy hallássérült emberek számára", "upload_form.audio_description": "Leírás siket vagy hallássérült emberek számára",
"upload_form.description": "Leírás vak vagy gyengénlátó emberek számára", "upload_form.description": "Leírás vak vagy gyengénlátó emberek számára",
"upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomjon Szóközt vagy Entert. Húzás közben használja a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomja meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomja meg az Esc gombot.", "upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomj Szóközt vagy Entert. Húzás közben használd a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomd meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomd meg az Esc gombot.",
"upload_form.drag_and_drop.on_drag_cancel": "Az áthúzást megszakította. A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_cancel": "Az áthúzás megszakítva. A(z) {item} médiamelléklet el lett dobva.",
"upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.",
"upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.", "upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.",
"upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.", "upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.",

View file

@ -85,6 +85,7 @@
"alert.rate_limited.title": "制限に達しました", "alert.rate_limited.title": "制限に達しました",
"alert.unexpected.message": "不明なエラーが発生しました。", "alert.unexpected.message": "不明なエラーが発生しました。",
"alert.unexpected.title": "エラー!", "alert.unexpected.title": "エラー!",
"alt_text_badge.title": "代替テキスト",
"announcement.announcement": "お知らせ", "announcement.announcement": "お知らせ",
"attachments_list.unprocessed": "(未処理)", "attachments_list.unprocessed": "(未処理)",
"audio.hide": "音声を閉じる", "audio.hide": "音声を閉じる",

View file

@ -278,6 +278,8 @@
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} assa", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} assa",
"hashtag.follow": "Ḍfeṛ ahacṭag", "hashtag.follow": "Ḍfeṛ ahacṭag",
"hashtags.and_other": "…d {count, plural, one {}other {# nniḍen}}", "hashtags.and_other": "…d {count, plural, one {}other {# nniḍen}}",
"hints.threads.replies_may_be_missing": "Tiririyin d-yusan deg iqeddacen nniḍen, yezmer ur d-ddant ara.",
"hints.threads.see_more": "Wali ugar n tririt deg {domain}",
"home.column_settings.show_reblogs": "Ssken-d beṭṭu", "home.column_settings.show_reblogs": "Ssken-d beṭṭu",
"home.column_settings.show_replies": "Ssken-d tiririyin", "home.column_settings.show_replies": "Ssken-d tiririyin",
"home.hide_announcements": "Ffer ulɣuyen", "home.hide_announcements": "Ffer ulɣuyen",
@ -585,6 +587,7 @@
"status.bookmark": "Creḍ", "status.bookmark": "Creḍ",
"status.cancel_reblog_private": "Sefsex beṭṭu", "status.cancel_reblog_private": "Sefsex beṭṭu",
"status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen", "status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
"status.continued_thread": "Asqerdec yettkemmil",
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
"status.delete": "Kkes", "status.delete": "Kkes",
"status.direct": "Bder-d @{name} weḥd-s", "status.direct": "Bder-d @{name} weḥd-s",
@ -616,9 +619,10 @@
"status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.", "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
"status.redraft": "Kkes tɛiwdeḍ tira", "status.redraft": "Kkes tɛiwdeḍ tira",
"status.remove_bookmark": "Kkes tacreḍt", "status.remove_bookmark": "Kkes tacreḍt",
"status.replied_in_thread": "Y·t·erra-d deg usqerdec",
"status.replied_to": "Y·terra-yas i {name}", "status.replied_to": "Y·terra-yas i {name}",
"status.reply": "Err", "status.reply": "Err",
"status.replyAll": "Err i lxiḍ", "status.replyAll": "Err i wesqerdec",
"status.report": "Cetki ɣef @{name}", "status.report": "Cetki ɣef @{name}",
"status.sensitive_warning": "Agbur amḥulfu", "status.sensitive_warning": "Agbur amḥulfu",
"status.share": "Bḍu", "status.share": "Bḍu",

View file

@ -317,7 +317,7 @@
"follow_suggestions.curated_suggestion": "스태프의 추천", "follow_suggestions.curated_suggestion": "스태프의 추천",
"follow_suggestions.dismiss": "다시 보지 않기", "follow_suggestions.dismiss": "다시 보지 않기",
"follow_suggestions.featured_longer": "{domain} 팀이 손수 고름", "follow_suggestions.featured_longer": "{domain} 팀이 손수 고름",
"follow_suggestions.friends_of_friends_longer": "내가 팔로우 하는 사람들 사이에서 인기", "follow_suggestions.friends_of_friends_longer": "내가 팔로우 사람들 사이에서 인기",
"follow_suggestions.hints.featured": "이 프로필은 {domain} 팀이 손수 선택했습니다.", "follow_suggestions.hints.featured": "이 프로필은 {domain} 팀이 손수 선택했습니다.",
"follow_suggestions.hints.friends_of_friends": "이 프로필은 내가 팔로우 하는 사람들에게서 유명합니다.", "follow_suggestions.hints.friends_of_friends": "이 프로필은 내가 팔로우 하는 사람들에게서 유명합니다.",
"follow_suggestions.hints.most_followed": "이 프로필은 {domain}에서 가장 많이 팔로우 된 사람들 중 하나입니다.", "follow_suggestions.hints.most_followed": "이 프로필은 {domain}에서 가장 많이 팔로우 된 사람들 중 하나입니다.",

View file

@ -504,13 +504,13 @@
"notification.admin.report_statuses": "{name} rapporteerde {target} voor {category}", "notification.admin.report_statuses": "{name} rapporteerde {target} voor {category}",
"notification.admin.report_statuses_other": "{name} rapporteerde {target}", "notification.admin.report_statuses_other": "{name} rapporteerde {target}",
"notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.admin.sign_up": "{name} heeft zich geregistreerd",
"notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben zich geregistreerd", "notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben zich geregistreerd",
"notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.favourite": "{name} markeerde jouw bericht als favoriet",
"notification.favourite.name_and_others_with_link": "{name} en <a>{count, plural, one {# ander} other {# anderen}}</a> hebben jouw bericht als favoriet gemarkeerd", "notification.favourite.name_and_others_with_link": "{name} en <a>{count, plural, one {# ander persoon} other {# andere personen}}</a> hebben jouw bericht als favoriet gemarkeerd",
"notification.follow": "{name} volgt jou nu", "notification.follow": "{name} volgt jou nu",
"notification.follow.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben je gevolgd", "notification.follow.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben je gevolgd",
"notification.follow_request": "{name} wil jou graag volgen", "notification.follow_request": "{name} wil jou graag volgen",
"notification.follow_request.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben gevraagd om je te volgen", "notification.follow_request.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben gevraagd om je te volgen",
"notification.label.mention": "Vermelding", "notification.label.mention": "Vermelding",
"notification.label.private_mention": "Privébericht", "notification.label.private_mention": "Privébericht",
"notification.label.private_reply": "Privéreactie", "notification.label.private_reply": "Privéreactie",
@ -528,7 +528,7 @@
"notification.own_poll": "Jouw peiling is beëindigd", "notification.own_poll": "Jouw peiling is beëindigd",
"notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd", "notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd",
"notification.reblog": "{name} boostte jouw bericht", "notification.reblog": "{name} boostte jouw bericht",
"notification.reblog.name_and_others_with_link": "{name} en <a>{count, plural, one {# ander} other {# anderen}}</a> hebben jouw bericht geboost", "notification.reblog.name_and_others_with_link": "{name} en <a>{count, plural, one {# ander persoon} other {# andere personen}}</a> hebben jouw bericht geboost",
"notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event": "Verloren verbindingen met {name}",
"notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.",
"notification.relationships_severance_event.domain_block": "Een beheerder van {from} heeft {target} geblokkeerd, inclusief {followersCount} van jouw volgers en {followingCount, plural, one {# account} other {# accounts}} die jij volgt.", "notification.relationships_severance_event.domain_block": "Een beheerder van {from} heeft {target} geblokkeerd, inclusief {followersCount} van jouw volgers en {followingCount, plural, one {# account} other {# accounts}} die jij volgt.",

View file

@ -502,6 +502,8 @@
"notification.reblog": "{name} fremhevet ditt innlegg", "notification.reblog": "{name} fremhevet ditt innlegg",
"notification.status": "{name} la nettopp ut", "notification.status": "{name} la nettopp ut",
"notification.update": "{name} redigerte et innlegg", "notification.update": "{name} redigerte et innlegg",
"notification_requests.minimize_banner": "Minimer banneret for filtrerte varsler",
"notification_requests.view": "Vis varsler",
"notifications.clear": "Fjern varsler", "notifications.clear": "Fjern varsler",
"notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?",
"notifications.column_settings.admin.report": "Nye rapporter:", "notifications.column_settings.admin.report": "Nye rapporter:",

View file

@ -85,6 +85,7 @@
"alert.rate_limited.title": "Màssimu de rechestas barigadu", "alert.rate_limited.title": "Màssimu de rechestas barigadu",
"alert.unexpected.message": "Ddoe est istada una faddina.", "alert.unexpected.message": "Ddoe est istada una faddina.",
"alert.unexpected.title": "Oh!", "alert.unexpected.title": "Oh!",
"alt_text_badge.title": "Testu alternativu",
"announcement.announcement": "Annùntziu", "announcement.announcement": "Annùntziu",
"attachments_list.unprocessed": "(non protzessadu)", "attachments_list.unprocessed": "(non protzessadu)",
"audio.hide": "Cua s'àudio", "audio.hide": "Cua s'àudio",
@ -97,6 +98,8 @@
"block_modal.title": "Boles blocare s'utente?", "block_modal.title": "Boles blocare s'utente?",
"block_modal.you_wont_see_mentions": "No as a bìdere is publicatziones chi mèntovent custa persone.", "block_modal.you_wont_see_mentions": "No as a bìdere is publicatziones chi mèntovent custa persone.",
"boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit",
"boost_modal.reblog": "Boles potentziare sa publicatzione?",
"boost_modal.undo_reblog": "Boles tzessare de potentziare sa publicatzione?",
"bundle_column_error.copy_stacktrace": "Còpia s'informe de faddina", "bundle_column_error.copy_stacktrace": "Còpia s'informe de faddina",
"bundle_column_error.error.body": "Sa pàgina pedida non faghiat a dda renderizare. Diat pòdere èssere pro neghe de una faddina in su còdighe nostru, o de unu problema de cumpatibilidade de su navigadore.", "bundle_column_error.error.body": "Sa pàgina pedida non faghiat a dda renderizare. Diat pòdere èssere pro neghe de una faddina in su còdighe nostru, o de unu problema de cumpatibilidade de su navigadore.",
"bundle_column_error.error.title": "Oh, no!", "bundle_column_error.error.title": "Oh, no!",
@ -104,11 +107,15 @@
"bundle_column_error.network.title": "Faddina de connessione", "bundle_column_error.network.title": "Faddina de connessione",
"bundle_column_error.retry": "Torra·bi a proare", "bundle_column_error.retry": "Torra·bi a proare",
"bundle_column_error.return": "Torra a sa pàgina printzipale", "bundle_column_error.return": "Torra a sa pàgina printzipale",
"bundle_column_error.routing.body": "Impossìbile agatare sa pàgina rechesta. Seguru chi s'URL in sa barra de indiritzos est curretu?",
"bundle_column_error.routing.title": "404", "bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Serra", "bundle_modal_error.close": "Serra",
"bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.",
"bundle_modal_error.retry": "Torra·bi a proare", "bundle_modal_error.retry": "Torra·bi a proare",
"closed_registrations.other_server_instructions": "Dae chi Mastodon est detzentralizadu, podes creare unu contu in un'àteru serbidore e interagire cun custu.",
"closed_registrations_modal.description": "Sa creatzione de contos in {domain} no est possìbile in custu momentu, però tene in cunsideru chi non tenes bisòngiu de unu contu ispetzìficu in {domain} pro impreare Mastodon.",
"closed_registrations_modal.find_another_server": "Agata un'àteru serbidore", "closed_registrations_modal.find_another_server": "Agata un'àteru serbidore",
"closed_registrations_modal.title": "Su registru a Mastodon",
"column.about": "Informatziones", "column.about": "Informatziones",
"column.blocks": "Persones blocadas", "column.blocks": "Persones blocadas",
"column.bookmarks": "Sinnalibros", "column.bookmarks": "Sinnalibros",
@ -142,6 +149,7 @@
"compose.published.open": "Aberi", "compose.published.open": "Aberi",
"compose.saved.body": "Publicatzione sarvada.", "compose.saved.body": "Publicatzione sarvada.",
"compose_form.direct_message_warning_learn_more": "Àteras informatziones", "compose_form.direct_message_warning_learn_more": "Àteras informatziones",
"compose_form.encryption_warning": "Is publicatziones a Mastodon no sunt critografados a nodu terminale. Non cumpartzas informatziones delicadas in Mastodon.",
"compose_form.hashtag_warning": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est pùblica. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.", "compose_form.hashtag_warning": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est pùblica. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.",
"compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a sa gente chi ti sighit.", "compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a sa gente chi ti sighit.",
"compose_form.lock_disclaimer.lock": "blocadu", "compose_form.lock_disclaimer.lock": "blocadu",
@ -171,15 +179,23 @@
"confirmations.discard_edit_media.confirm": "Iscarta", "confirmations.discard_edit_media.confirm": "Iscarta",
"confirmations.discard_edit_media.message": "Tenes modìficas non sarvadas a is descritziones o a is anteprimas de is cuntenutos, ddas boles iscartare su matessi?", "confirmations.discard_edit_media.message": "Tenes modìficas non sarvadas a is descritziones o a is anteprimas de is cuntenutos, ddas boles iscartare su matessi?",
"confirmations.edit.confirm": "Modìfica", "confirmations.edit.confirm": "Modìfica",
"confirmations.edit.message": "Modifichende immoe as a subrascrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?",
"confirmations.edit.title": "Boles subraiscrìere sa publicatzione?",
"confirmations.logout.confirm": "Essi·nche", "confirmations.logout.confirm": "Essi·nche",
"confirmations.logout.message": "Seguru chi boles essire?", "confirmations.logout.message": "Seguru chi boles essire?",
"confirmations.logout.title": "Boles serrare sa sessione?",
"confirmations.mute.confirm": "A sa muda", "confirmations.mute.confirm": "A sa muda",
"confirmations.redraft.confirm": "Cantzella e torra a fàghere", "confirmations.redraft.confirm": "Cantzella e torra a fàghere",
"confirmations.redraft.message": "Seguru chi boles cantzellare e torrare a fàghere custa publicatzione? As a pèrdere is preferidos e is cumpartziduras, e is rispostas a su messàgiu originale ant a abarrare òrfanas.", "confirmations.redraft.message": "Seguru chi boles cantzellare e torrare a fàghere custa publicatzione? As a pèrdere is preferidos e is cumpartziduras, e is rispostas a su messàgiu originale ant a abarrare òrfanas.",
"confirmations.redraft.title": "Boles cantzellare e torrare a iscrìere sa publicatzione?",
"confirmations.reply.confirm": "Risponde", "confirmations.reply.confirm": "Risponde",
"confirmations.reply.message": "Rispondende immoe as a subrascrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?", "confirmations.reply.message": "Rispondende immoe as a subrascrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?",
"confirmations.reply.title": "Boles subraiscrìere sa publicatzione?",
"confirmations.unfollow.confirm": "Non sigas prus", "confirmations.unfollow.confirm": "Non sigas prus",
"confirmations.unfollow.message": "Seguru chi non boles sighire prus a {name}?", "confirmations.unfollow.message": "Seguru chi non boles sighire prus a {name}?",
"confirmations.unfollow.title": "Boles tzessare de sighire s'utente?",
"content_warning.hide": "Cua sa publicatzione",
"content_warning.show": "Ammustra·dda su pròpiu",
"conversation.delete": "Cantzella arresonada", "conversation.delete": "Cantzella arresonada",
"conversation.mark_as_read": "Signala comente lèghidu", "conversation.mark_as_read": "Signala comente lèghidu",
"conversation.open": "Ammustra arresonada", "conversation.open": "Ammustra arresonada",
@ -193,7 +209,10 @@
"directory.recently_active": "Cun atividade dae pagu", "directory.recently_active": "Cun atividade dae pagu",
"disabled_account_banner.account_settings": "Cunfiguratziones de su contu", "disabled_account_banner.account_settings": "Cunfiguratziones de su contu",
"disabled_account_banner.text": "Su contu tuo {disabledAccount} no est ativu.", "disabled_account_banner.text": "Su contu tuo {disabledAccount} no est ativu.",
"dismissable_banner.community_timeline": "Custas sunt is publicatziones pùblicas prus reghentes dae gente cun contu in {domain}.",
"dismissable_banner.dismiss": "Iscarta", "dismissable_banner.dismiss": "Iscarta",
"dismissable_banner.explore_links": "Custas sunt is istòrias de noas prus cumpartzidas in sa rete oe. Is istòrias prus noas publicadas dae gente prus diversa ant a èssere priorizadas.",
"dismissable_banner.explore_statuses": "Custas sunt publicatziones dae sa rete detzentralizada chi sunt retzende atentzione oe. Is publicatziones prus noas cun prus cumpartziduras e preferèntzias ant a èssere priorizadas.",
"domain_block_modal.block": "Bloca su serbidore", "domain_block_modal.block": "Bloca su serbidore",
"domain_block_modal.block_account_instead": "Bloca imbetzes a @{name}", "domain_block_modal.block_account_instead": "Bloca imbetzes a @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Is persones de custu serbidore podent ancora interagire cun is publicatziones betzas tuas.", "domain_block_modal.they_can_interact_with_old_posts": "Is persones de custu serbidore podent ancora interagire cun is publicatziones betzas tuas.",
@ -207,6 +226,7 @@
"domain_pill.their_handle": "S'identificadore suo:", "domain_pill.their_handle": "S'identificadore suo:",
"domain_pill.their_server": "Sa domo digitale sua, in ue istant totu is publicatziones suas.", "domain_pill.their_server": "Sa domo digitale sua, in ue istant totu is publicatziones suas.",
"domain_pill.username": "Nòmine de utente", "domain_pill.username": "Nòmine de utente",
"domain_pill.whats_in_a_handle": "Ite est un'identificadore?",
"domain_pill.your_handle": "S'identificadore tuo:", "domain_pill.your_handle": "S'identificadore tuo:",
"domain_pill.your_server": "Sa domo digitale tua, in ue istant totu is publicatziones tuas. Custa non t'agradat? Tràmuda serbidore in cale si siat momentu e bati·ti fintzas in fatu is sighidores tuos.", "domain_pill.your_server": "Sa domo digitale tua, in ue istant totu is publicatziones tuas. Custa non t'agradat? Tràmuda serbidore in cale si siat momentu e bati·ti fintzas in fatu is sighidores tuos.",
"domain_pill.your_username": "S'identificadore ùnicu tuo in custu serbidore. Si podent agatare utentes cun su matessi nòmine de utente in àteros serbidores.", "domain_pill.your_username": "S'identificadore ùnicu tuo in custu serbidore. Si podent agatare utentes cun su matessi nòmine de utente in àteros serbidores.",
@ -254,6 +274,7 @@
"explore.trending_links": "Noas", "explore.trending_links": "Noas",
"explore.trending_statuses": "Publicatziones", "explore.trending_statuses": "Publicatziones",
"explore.trending_tags": "Etichetas", "explore.trending_tags": "Etichetas",
"filter_modal.added.context_mismatch_title": "Su cuntestu non currispondet.",
"filter_modal.added.expired_title": "Filtru iscadidu.", "filter_modal.added.expired_title": "Filtru iscadidu.",
"filter_modal.added.review_and_configure_title": "Cunfiguratziones de filtru", "filter_modal.added.review_and_configure_title": "Cunfiguratziones de filtru",
"filter_modal.added.settings_link": "pàgina de cunfiguratzione", "filter_modal.added.settings_link": "pàgina de cunfiguratzione",
@ -277,7 +298,13 @@
"follow_suggestions.featured_longer": "Seberadu a manu dae s'iscuadra de {domain}", "follow_suggestions.featured_longer": "Seberadu a manu dae s'iscuadra de {domain}",
"follow_suggestions.friends_of_friends_longer": "Populare intre persones chi sighis", "follow_suggestions.friends_of_friends_longer": "Populare intre persones chi sighis",
"follow_suggestions.hints.featured": "Custu profilu est istadu seberadu a manu dae s'iscuadra {domain}.", "follow_suggestions.hints.featured": "Custu profilu est istadu seberadu a manu dae s'iscuadra {domain}.",
"follow_suggestions.personalized_suggestion": "Cussìgiu personalizadu",
"follow_suggestions.popular_suggestion": "Cussìgiu populare",
"follow_suggestions.popular_suggestion_longer": "Populare a {domain}",
"follow_suggestions.similar_to_recently_followed_longer": "Profilos sìmiles a is chi as sighidu de reghente",
"follow_suggestions.view_all": "Ammustra totu", "follow_suggestions.view_all": "Ammustra totu",
"follow_suggestions.who_to_follow": "Chie sighire",
"followed_tags": "Etichetas sighidas",
"footer.about": "Informatziones", "footer.about": "Informatziones",
"footer.directory": "Diretòriu de profilos", "footer.directory": "Diretòriu de profilos",
"footer.get_app": "Otene s'aplicatzione", "footer.get_app": "Otene s'aplicatzione",
@ -302,6 +329,11 @@
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}} oe", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}} oe",
"hashtag.follow": "Sighi su hashtag", "hashtag.follow": "Sighi su hashtag",
"hashtag.unfollow": "Non sigas prus s'eticheta", "hashtag.unfollow": "Non sigas prus s'eticheta",
"hashtags.and_other": "… e {count, plural, one {un'àteru} other {àteros #}}",
"hints.profiles.posts_may_be_missing": "Podet èssere chi ammanchent tzertas publicatziones de custu profilu.",
"hints.profiles.see_more_posts": "Bide prus publicatziones a {domain}",
"hints.threads.replies_may_be_missing": "Podet èssere chi ammanchent rispostas dae àteros serbidores.",
"hints.threads.see_more": "Bide prus rispostas a {domain}",
"home.column_settings.show_reblogs": "Ammustra is cumpartziduras", "home.column_settings.show_reblogs": "Ammustra is cumpartziduras",
"home.column_settings.show_replies": "Ammustra rispostas", "home.column_settings.show_replies": "Ammustra rispostas",
"home.hide_announcements": "Cua annùntzios", "home.hide_announcements": "Cua annùntzios",
@ -309,7 +341,14 @@
"home.pending_critical_update.link": "Ammustra is atualizatziones", "home.pending_critical_update.link": "Ammustra is atualizatziones",
"home.pending_critical_update.title": "Atualizatzione de seguresa crìtica a disponimentu.", "home.pending_critical_update.title": "Atualizatzione de seguresa crìtica a disponimentu.",
"home.show_announcements": "Ammustra annùntzios", "home.show_announcements": "Ammustra annùntzios",
"ignore_notifications_modal.disclaimer": "Mastodon non podet informare is utentes chi as innioradu is notìficas issoro. Inniorare notìficas no at a evitare chi s'imbient is messàgios.",
"ignore_notifications_modal.filter_instead": "Opuru filtra",
"ignore_notifications_modal.filter_to_act_users": "As a pòdere ancora atzetare, refudare o sinnalare a utentes",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrare agiudat a evitare possìbiles confusiones",
"interaction_modal.description.reply": "Podes rispòndere a custa publicatzione cun unu contu de Mastodon.", "interaction_modal.description.reply": "Podes rispòndere a custa publicatzione cun unu contu de Mastodon.",
"interaction_modal.login.action": "Torra a sa pàgina printzipale",
"interaction_modal.login.prompt": "Su domìniu de su serbidore domèsticu tuo, pro esempru mastodon.social",
"interaction_modal.no_account_yet": "Non ses in Mastodon?",
"interaction_modal.on_this_server": "In custu serbidore", "interaction_modal.on_this_server": "In custu serbidore",
"interaction_modal.title.follow": "Sighi a {name}", "interaction_modal.title.follow": "Sighi a {name}",
"interaction_modal.title.reply": "Risponde a sa publicatzione de {name}", "interaction_modal.title.reply": "Risponde a sa publicatzione de {name}",
@ -353,11 +392,13 @@
"lightbox.next": "Imbeniente", "lightbox.next": "Imbeniente",
"lightbox.previous": "Pretzedente", "lightbox.previous": "Pretzedente",
"limited_account_hint.title": "Custu profilu est istadu cuadu dae sa moderatzione de {domain}.", "limited_account_hint.title": "Custu profilu est istadu cuadu dae sa moderatzione de {domain}.",
"link_preview.shares": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}",
"lists.account.add": "Agiunghe a sa lista", "lists.account.add": "Agiunghe a sa lista",
"lists.account.remove": "Boga dae sa lista", "lists.account.remove": "Boga dae sa lista",
"lists.delete": "Cantzella sa lista", "lists.delete": "Cantzella sa lista",
"lists.edit": "Modìfica sa lista", "lists.edit": "Modìfica sa lista",
"lists.edit.submit": "Muda su tìtulu", "lists.edit.submit": "Muda su tìtulu",
"lists.exclusive": "Cua custas publicatziones dae sa pàgina printzipale",
"lists.new.create": "Agiunghe lista", "lists.new.create": "Agiunghe lista",
"lists.new.title_placeholder": "Tìtulu de sa lista noa", "lists.new.title_placeholder": "Tìtulu de sa lista noa",
"lists.replies_policy.followed": "Cale si siat persone chi sighis", "lists.replies_policy.followed": "Cale si siat persone chi sighis",
@ -368,7 +409,20 @@
"lists.subheading": "Is listas tuas", "lists.subheading": "Is listas tuas",
"load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
"loading_indicator.label": "Carrighende…", "loading_indicator.label": "Carrighende…",
"media_gallery.hide": "Cua",
"moved_to_account_banner.text": "Su contu tuo {disabledAccount} est disativadu in custu momentu ca est istadu tramudadu a {movedToAccount}.",
"mute_modal.hide_from_notifications": "Cua dae is notìficas",
"mute_modal.hide_options": "Cua is optziones",
"mute_modal.indefinite": "Fintzas a cando no apo a torrare a ativare is notìficas",
"mute_modal.show_options": "Ammustra is optziones",
"mute_modal.they_can_mention_and_follow": "Ti podent mentovare e sighire, però no ddos as a bìdere.",
"mute_modal.they_wont_know": "No ant a ischire chi ddos as postu a sa muda.",
"mute_modal.title": "Boles pònnere a custu contu a sa muda?",
"mute_modal.you_wont_see_mentions": "No as a bìdere is publicatziones chi mèntovent a custa persone.",
"mute_modal.you_wont_see_posts": "At a pòdere bìdere is publicatziones tuas, però tue no as a bìdere cussas suas.",
"navigation_bar.about": "Informatziones", "navigation_bar.about": "Informatziones",
"navigation_bar.administration": "Amministratzione",
"navigation_bar.advanced_interface": "Aberi s'interfache web avantzada",
"navigation_bar.blocks": "Persones blocadas", "navigation_bar.blocks": "Persones blocadas",
"navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.bookmarks": "Sinnalibros",
"navigation_bar.community_timeline": "Lìnia de tempus locale", "navigation_bar.community_timeline": "Lìnia de tempus locale",
@ -380,10 +434,13 @@
"navigation_bar.favourites": "Preferidos", "navigation_bar.favourites": "Preferidos",
"navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.filters": "Faeddos a sa muda",
"navigation_bar.follow_requests": "Rechestas de sighidura", "navigation_bar.follow_requests": "Rechestas de sighidura",
"navigation_bar.followed_tags": "Etichetas sighidas",
"navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras", "navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras",
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Essi", "navigation_bar.logout": "Essi",
"navigation_bar.moderation": "Moderatzione",
"navigation_bar.mutes": "Persones a sa muda", "navigation_bar.mutes": "Persones a sa muda",
"navigation_bar.opened_in_classic_interface": "Publicatziones, contos e àteras pàginas ispetzìficas sunt abertas in manera predefinida in s'interfache web clàssica.",
"navigation_bar.personal": "Informatziones personales", "navigation_bar.personal": "Informatziones personales",
"navigation_bar.pins": "Publicatziones apicadas", "navigation_bar.pins": "Publicatziones apicadas",
"navigation_bar.preferences": "Preferèntzias", "navigation_bar.preferences": "Preferèntzias",
@ -391,10 +448,24 @@
"navigation_bar.search": "Chirca", "navigation_bar.search": "Chirca",
"navigation_bar.security": "Seguresa", "navigation_bar.security": "Seguresa",
"not_signed_in_indicator.not_signed_in": "Ti depes identificare pro atzèdere a custa resursa.", "not_signed_in_indicator.not_signed_in": "Ti depes identificare pro atzèdere a custa resursa.",
"notification.admin.report": "{name} at sinnaladu a {target}",
"notification.admin.report_account": "{name} at sinnaladu {count, plural, one {una publicatzione} other {# publicatziones}} dae {target} pro {category}",
"notification.admin.report_account_other": "{name} at sinnaladu {count, plural, one {una publicatzione} other {# publicatziones}} dae {target}",
"notification.admin.report_statuses": "{name} at sinnaladu a {target} pro {category}",
"notification.admin.report_statuses_other": "{name} at sinnaladu a {target}",
"notification.admin.sign_up": "{name} at aderidu", "notification.admin.sign_up": "{name} at aderidu",
"notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} si sunt registradas",
"notification.favourite": "{name} at marcadu comente a preferidu s'istadu tuo", "notification.favourite": "{name} at marcadu comente a preferidu s'istadu tuo",
"notification.favourite.name_and_others_with_link": "{name} e <a>{count, plural, one {un'àtera persone} other {àteras # persones}}</a> ant marcadu sa publicatzione tua comente preferida",
"notification.follow": "{name} ti sighit", "notification.follow": "{name} ti sighit",
"notification.follow.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ti sighint",
"notification.follow_request": "{name} at dimandadu de ti sighire", "notification.follow_request": "{name} at dimandadu de ti sighire",
"notification.follow_request.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant pedidu de ti sighire",
"notification.label.mention": "Mèntovu",
"notification.label.private_mention": "Mèntovu privadu",
"notification.label.private_reply": "Risposta privada",
"notification.label.reply": "Risposta",
"notification.mention": "Mèntovu",
"notification.moderation-warning.learn_more": "Àteras informatziones", "notification.moderation-warning.learn_more": "Àteras informatziones",
"notification.moderation_warning": "T'ant imbiadu un'avisu de moderatzione", "notification.moderation_warning": "T'ant imbiadu un'avisu de moderatzione",
"notification.moderation_warning.action_delete_statuses": "Unas cantas de is publicatziones tuas sunt istadas cantzelladas.", "notification.moderation_warning.action_delete_statuses": "Unas cantas de is publicatziones tuas sunt istadas cantzelladas.",
@ -407,12 +478,30 @@
"notification.own_poll": "Sondàgiu acabbadu", "notification.own_poll": "Sondàgiu acabbadu",
"notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu",
"notification.reblog": "{name} at cumpartzidu sa publicatzione tua", "notification.reblog": "{name} at cumpartzidu sa publicatzione tua",
"notification.reblog.name_and_others_with_link": "{name} e <a>{count, plural, one {un'àtera persone} other {àteras # persones}}</a> ant potentziadu sa publicatzione tua",
"notification.relationships_severance_event": "Connessiones pèrdidas cun {name}", "notification.relationships_severance_event": "Connessiones pèrdidas cun {name}",
"notification.relationships_severance_event.account_suspension": "S'amministratzione de {from} at suspèndidu a {target}; custu bolet nàrrere chi non podes prus retzire atualizatziones dae in cue o interagire cun cussos contos.",
"notification.relationships_severance_event.domain_block": "S'amministratzione de {from} at blocadu a {target}, incluende {followersCount} sighiduras tuas e {followingCount, plural, one {un'àteru contu} other {àteros # contos}} chi sighis.",
"notification.relationships_severance_event.learn_more": "Àteras informatziones", "notification.relationships_severance_event.learn_more": "Àteras informatziones",
"notification.relationships_severance_event.user_domain_block": "As blocadu a {target}, bogadu a {followersCount} contos chi ti sighint e {followingCount, plural, one {un'àteru contu} other {àteros # contos}} chi sighis.",
"notification.status": "{name} at publicadu cosa", "notification.status": "{name} at publicadu cosa",
"notification.update": "{name} at modificadu una publicatzione", "notification.update": "{name} at modificadu una publicatzione",
"notification_requests.accept": "Atzeta", "notification_requests.accept": "Atzeta",
"notification_requests.accept_multiple": "{count, plural, one {Atzeta una rechesta…} other {Atzeta # rechestas…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Atzeta sa rechesta} other {Atzeta is rechestas}}",
"notification_requests.confirm_accept_multiple.message": "Ses atzetende {count, plural, one {una rechesta de notìfica} other {# rechestas de notìfica}}. Seguru chi boles sighire?",
"notification_requests.confirm_accept_multiple.title": "Boles atzetare is rechestas de notìfica?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Iscarta sa rechesta} other {Iscarta is rechestas}}",
"notification_requests.confirm_dismiss_multiple.message": "Ses acanta de iscartare {count, plural, one {una rechesta de notìfica} other {# rechestas de notìfica}}. No nche {count, plural, one {} other {}} as a pòdere prus atzèdere in manera sèmplitze. Seguru chi boles sighire?",
"notification_requests.confirm_dismiss_multiple.title": "Boles iscartare is rechestas de notìfica?",
"notification_requests.dismiss": "Iscarta", "notification_requests.dismiss": "Iscarta",
"notification_requests.dismiss_multiple": "{count, plural, one {Iscarta una rechesta…} other {Iscarta # rechestas…}}",
"notification_requests.edit_selection": "Modifica",
"notification_requests.exit_selection": "Fatu",
"notification_requests.explainer_for_limited_account": "Is notìficas de custu contu sunt istadas filtradas, ca su contu est istadu limitadu dae sa moderatzione.",
"notification_requests.explainer_for_limited_remote_account": "Is notìficas de custu contu sunt istadas filtradas, ca su contu o su serbidore suo est istadu limitadu dae sa moderatzione.",
"notification_requests.maximize": "Ismànnia",
"notification_requests.minimize_banner": "Mìnima su bànner de notìficas filtradas",
"notification_requests.notifications_from": "Notìficas dae {name}", "notification_requests.notifications_from": "Notìficas dae {name}",
"notification_requests.title": "Notìficas filtradas", "notification_requests.title": "Notìficas filtradas",
"notifications.clear": "Lìmpia notìficas", "notifications.clear": "Lìmpia notìficas",
@ -472,6 +561,11 @@
"poll_button.add_poll": "Agiunghe unu sondàgiu", "poll_button.add_poll": "Agiunghe unu sondàgiu",
"poll_button.remove_poll": "Cantzella su sondàgiu", "poll_button.remove_poll": "Cantzella su sondàgiu",
"privacy.change": "Modìfica s'istadu de riservadesa", "privacy.change": "Modìfica s'istadu de riservadesa",
"privacy.direct.long": "Totu is utentes mentovados in sa publicatzione",
"privacy.direct.short": "Persones ispetzìficas",
"privacy.private.long": "Isceti chie ti sighit",
"privacy.private.short": "Sighiduras",
"privacy.public.long": "Cale si siat persone a intro o a foras de Mastodon",
"privacy.public.short": "Pùblicu", "privacy.public.short": "Pùblicu",
"privacy_policy.last_updated": "Ùrtima atualizatzione: {date}", "privacy_policy.last_updated": "Ùrtima atualizatzione: {date}",
"privacy_policy.title": "Polìtica de riservadesa", "privacy_policy.title": "Polìtica de riservadesa",
@ -497,34 +591,64 @@
"report.categories.legal": "Giurìdicu", "report.categories.legal": "Giurìdicu",
"report.categories.other": "Àteru", "report.categories.other": "Àteru",
"report.categories.spam": "Àliga", "report.categories.spam": "Àliga",
"report.category.subtitle": "Sèbera sa currispondèntzia prus arta",
"report.category.title": "Nara·nos ite sutzedet cun custu {type}",
"report.category.title_account": "profilu", "report.category.title_account": "profilu",
"report.category.title_status": "publicatzione", "report.category.title_status": "publicatzione",
"report.close": "Fatu", "report.close": "Fatu",
"report.comment.title": "Nch'at àteru chi depamus ischire?",
"report.forward": "Torra a imbiare a {target}", "report.forward": "Torra a imbiare a {target}",
"report.forward_hint": "Custu contu est de un'àteru serbidore. Ddi boles imbiare puru una còpia anònima de custu informe?", "report.forward_hint": "Custu contu est de un'àteru serbidore. Ddi boles imbiare puru una còpia anònima de custu informe?",
"report.mute": "A sa muda", "report.mute": "A sa muda",
"report.mute_explanation": "No as a bìdere is publicatziones suas. Ti podet ancora sighire e bìdere is publicatziones, ma no at a ischire chi dd'as postu a sa muda.",
"report.next": "Imbeniente", "report.next": "Imbeniente",
"report.placeholder": "Cummentos additzionales", "report.placeholder": "Cummentos additzionales",
"report.reasons.dislike": "Non mi praghet", "report.reasons.dislike": "Non mi praghet",
"report.reasons.dislike_description": "Est una cosa chi non boles bìdere", "report.reasons.dislike_description": "Est una cosa chi non boles bìdere",
"report.reasons.legal": "Illegale", "report.reasons.legal": "Illegale",
"report.reasons.other": "Un'àtera cosa", "report.reasons.other": "Un'àtera cosa",
"report.reasons.other_description": "Su problema non currispondet a is àteras categorias",
"report.reasons.spam": "Est àliga", "report.reasons.spam": "Est àliga",
"report.rules.subtitle": "Seletziona totu is chi àplichent",
"report.statuses.subtitle": "Seletziona totu is chi àplichent",
"report.submit": "Imbia", "report.submit": "Imbia",
"report.target": "Informende de {target}", "report.target": "Informende de {target}",
"report.thanks.title": "Non boles bìdere custu?",
"report.thanks.title_actionable": "Gràtzias de sa sinnalatzione, dd'amus a averiguare.",
"report.unfollow": "Non sigas prus a @{name}", "report.unfollow": "Non sigas prus a @{name}",
"report.unfollow_explanation": "Ses sighende custu contu. Si non boles bìdere is publicatziones suas in sa pàgina printzipale tua, no ddu sigas prus.",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
"report_notification.categories.legal": "Giurìdicu", "report_notification.categories.legal": "Giurìdicu",
"report_notification.categories.legal_sentence": "cuntenutu illegale", "report_notification.categories.legal_sentence": "cuntenutu illegale",
"report_notification.categories.other": "Àteru", "report_notification.categories.other": "Àteru",
"report_notification.categories.other_sentence": "àteru", "report_notification.categories.other_sentence": "àteru",
"report_notification.categories.spam": "Àliga", "report_notification.categories.spam": "Àliga",
"report_notification.categories.spam_sentence": "àliga",
"report_notification.open": "Aberi una sinnalatzione",
"search.no_recent_searches": "Nissuna chirca reghente",
"search.placeholder": "Chirca", "search.placeholder": "Chirca",
"search.quick_action.account_search": "Profilos chi currispondent cun {x}",
"search.quick_action.go_to_account": "Bae a su profilu {x}",
"search.quick_action.go_to_hashtag": "Bae a s'eticheta {x}",
"search.quick_action.open_url": "Aberi s'URL in Mastodon",
"search.quick_action.status_search": "Publicatziones chi currispondent cun {x}",
"search.search_or_paste": "Chirca o incolla un'URL",
"search_popout.full_text_search_disabled_message": "No a disponimentu a {domain}.",
"search_popout.full_text_search_logged_out_message": "Isceti a disponimentu cun sa sessione aberta.",
"search_popout.language_code": "Còdighe de limba ISO",
"search_popout.options": "Optziones de chirca",
"search_popout.quick_actions": "Atziones lestras",
"search_popout.recent": "Chircas reghentes",
"search_popout.specific_date": "data ispetzìfica",
"search_popout.user": "utente", "search_popout.user": "utente",
"search_results.accounts": "Profilos", "search_results.accounts": "Profilos",
"search_results.all": "Totus", "search_results.all": "Totus",
"search_results.hashtags": "Etichetas", "search_results.hashtags": "Etichetas",
"search_results.nothing_found": "Impossìbile agatare currispondèntzias pro custos tèrmines de chirca",
"search_results.see_all": "Bide totu",
"search_results.statuses": "Publicatziones", "search_results.statuses": "Publicatziones",
"search_results.title": "Chirca {q}",
"server_banner.about_active_users": "Gente chi at impreadu custu serbidore is ùrtimas 30 dies (Utentes cun Atividade a su Mese)",
"server_banner.active_users": "utentes ativos", "server_banner.active_users": "utentes ativos",
"server_banner.administered_by": "Amministradu dae:", "server_banner.administered_by": "Amministradu dae:",
"server_banner.server_stats": "Istatìsticas de su serbidore:", "server_banner.server_stats": "Istatìsticas de su serbidore:",

View file

@ -33,7 +33,7 @@
"account.follow": "Sledovať", "account.follow": "Sledovať",
"account.follow_back": "Sledovať späť", "account.follow_back": "Sledovať späť",
"account.followers": "Sledovatelia", "account.followers": "Sledovatelia",
"account.followers.empty": "Tento účet ešte nikto nesleduje.", "account.followers.empty": "Ešte nikto nesleduje tohto užívateľa.",
"account.followers_counter": "{count, plural, one {{counter} sledujúci} other {{counter} sledujúci}}", "account.followers_counter": "{count, plural, one {{counter} sledujúci} other {{counter} sledujúci}}",
"account.following": "Sledovaný účet", "account.following": "Sledovaný účet",
"account.following_counter": "{count, plural, one {{counter} sledovaných} other {{counter} sledovaných}}", "account.following_counter": "{count, plural, one {{counter} sledovaných} other {{counter} sledovaných}}",
@ -85,6 +85,7 @@
"alert.rate_limited.title": "Priveľa žiadostí", "alert.rate_limited.title": "Priveľa žiadostí",
"alert.unexpected.message": "Vyskytla sa nečakaná chyba.", "alert.unexpected.message": "Vyskytla sa nečakaná chyba.",
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alternatívny popis",
"announcement.announcement": "Oznámenie", "announcement.announcement": "Oznámenie",
"attachments_list.unprocessed": "(nespracované)", "attachments_list.unprocessed": "(nespracované)",
"audio.hide": "Skryť zvuk", "audio.hide": "Skryť zvuk",

View file

@ -852,6 +852,11 @@
"upload_error.poll": "Me pyetësorët slejohet ngarkim kartelash.", "upload_error.poll": "Me pyetësorët slejohet ngarkim kartelash.",
"upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar", "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar",
"upload_form.description": "Përshkruajeni për persona me probleme shikimi", "upload_form.description": "Përshkruajeni për persona me probleme shikimi",
"upload_form.drag_and_drop.instructions": "Që të merrni një bashkëngjitje media, shtypni tastin Space ose Enter. Teksa bëhet tërheqje, përdorni tastet shigjetë për ta shpënë bashkëngjitjen media në cilëndo drejtori që doni. Shtypni sërish Space ose Enter që të lihet bashkëngjitja media në pozicionin e vet të ri, ose shtypni Esc, që të anulohet veprimi.",
"upload_form.drag_and_drop.on_drag_cancel": "Tërheqja u anulua. Bashkëngjitja media {item} u la.",
"upload_form.drag_and_drop.on_drag_end": "Bashkëngjitja media {item} u la.",
"upload_form.drag_and_drop.on_drag_over": "Bashkëngjitja media {item} u lëviz.",
"upload_form.drag_and_drop.on_drag_start": "U mor bashkëngjitja media {item}.",
"upload_form.edit": "Përpunoni", "upload_form.edit": "Përpunoni",
"upload_form.thumbnail": "Ndryshoni miniaturën", "upload_form.thumbnail": "Ndryshoni miniaturën",
"upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi", "upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi",

View file

@ -124,7 +124,7 @@
"column.direct": "Özel değinmeler", "column.direct": "Özel değinmeler",
"column.directory": "Profillere göz at", "column.directory": "Profillere göz at",
"column.domain_blocks": "Engellenen alan adları", "column.domain_blocks": "Engellenen alan adları",
"column.favourites": "Favorilerin", "column.favourites": "Gözdelerin",
"column.firehose": "Anlık Akışlar", "column.firehose": "Anlık Akışlar",
"column.follow_requests": "Takip istekleri", "column.follow_requests": "Takip istekleri",
"column.home": "Anasayfa", "column.home": "Anasayfa",
@ -812,7 +812,7 @@
"status.reblogged_by": "{name} yeniden paylaştı", "status.reblogged_by": "{name} yeniden paylaştı",
"status.reblogs": "{count, plural, one {yeniden paylaşım} other {yeniden paylaşım}}", "status.reblogs": "{count, plural, one {yeniden paylaşım} other {yeniden paylaşım}}",
"status.reblogs.empty": "Henüz hiç kimse bu gönderiyi yeniden paylaşmadı. Herhangi bir kullanıcı yeniden paylaştığında burada görüntülenecek.", "status.reblogs.empty": "Henüz hiç kimse bu gönderiyi yeniden paylaşmadı. Herhangi bir kullanıcı yeniden paylaştığında burada görüntülenecek.",
"status.redraft": "Sil,Düzenle ve Yeniden paylaş", "status.redraft": "Sil,Düzenle ve yeniden-paylaş",
"status.remove_bookmark": "Yer işaretini kaldır", "status.remove_bookmark": "Yer işaretini kaldır",
"status.replied_in_thread": "Akışta yanıtlandı", "status.replied_in_thread": "Akışta yanıtlandı",
"status.replied_to": "{name} kullanıcısına yanıt verdi", "status.replied_to": "{name} kullanıcısına yanıt verdi",
@ -852,6 +852,11 @@
"upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.", "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.",
"upload_form.audio_description": "İşitme kaybı olan kişiler için yazı ekleyiniz", "upload_form.audio_description": "İşitme kaybı olan kişiler için yazı ekleyiniz",
"upload_form.description": "Görme engelliler için açıklama", "upload_form.description": "Görme engelliler için açıklama",
"upload_form.drag_and_drop.instructions": "Bir medya eklentisini taşımak için, boşluk veya enter tuşuna basın. Sürükleme sırasında medya eklentisini herhangi bir yöne hareket ettirmek için ok tuşlarını kullanın. Medya eklentisini yeni konumuna bırakmak için tekrar boşluk veya enter tuşuna basın veya işlemi iptal etmek için escape tuşuna basın.",
"upload_form.drag_and_drop.on_drag_cancel": "Sürükleme iptal edildi. Medya eklentisi {item} bırakıldı.",
"upload_form.drag_and_drop.on_drag_end": "Medya eklentisi {item} bırakıldı.",
"upload_form.drag_and_drop.on_drag_over": "Medya eklentisi {item} hareket ettirildi.",
"upload_form.drag_and_drop.on_drag_start": "Medya eklentisi {item} tutuldu.",
"upload_form.edit": "Düzenle", "upload_form.edit": "Düzenle",
"upload_form.thumbnail": "Küçük resmi değiştir", "upload_form.thumbnail": "Küçük resmi değiştir",
"upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için açıklama ekleyiniz", "upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için açıklama ekleyiniz",

View file

@ -852,6 +852,11 @@
"upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_error.poll": "Не можна завантажувати файли до опитувань.",
"upload_form.audio_description": "Опишіть для людей із вадами слуху", "upload_form.audio_description": "Опишіть для людей із вадами слуху",
"upload_form.description": "Опишіть для людей з вадами зору", "upload_form.description": "Опишіть для людей з вадами зору",
"upload_form.drag_and_drop.instructions": "Щоб вибрати медіавкладення, натисніть пробіл або Enter. Під час перетягування, використайте клавіші зі стрілками для переміщення вкладення в будь-якому напрямку. Натисніть пробіл або Enter знову, щоб залишити медіавкладення в новому положенні, або натисніть клавішу Escape, щоб скасувати.",
"upload_form.drag_and_drop.on_drag_cancel": "Перетягування скасовано. Медіавкладення {item} прибрано.",
"upload_form.drag_and_drop.on_drag_end": "Медіавкладення {item} прибрано.",
"upload_form.drag_and_drop.on_drag_over": "Медіавкладення {item} переміщено.",
"upload_form.drag_and_drop.on_drag_start": "Медіавкладення {item} вибрано.",
"upload_form.edit": "Змінити", "upload_form.edit": "Змінити",
"upload_form.thumbnail": "Змінити мініатюру", "upload_form.thumbnail": "Змінити мініатюру",
"upload_form.video_description": "Опишіть для людей із вадами слуху або зору", "upload_form.video_description": "Опишіть для людей із вадами слуху або зору",

View file

@ -402,12 +402,12 @@ export default function compose(state = initialState, action) {
.set('isUploadingThumbnail', false) .set('isUploadingThumbnail', false)
.update('media_attachments', list => list.map(item => { .update('media_attachments', list => list.map(item => {
if (item.get('id') === action.media.id) { if (item.get('id') === action.media.id) {
return fromJS(action.media); return fromJS(action.media).set('unattached', item.get('unattached'));
} }
return item; return item;
})); }));
case INIT_MEDIA_EDIT_MODAL: case INIT_MEDIA_EDIT_MODAL: {
const media = state.get('media_attachments').find(item => item.get('id') === action.id); const media = state.get('media_attachments').find(item => item.get('id') === action.id);
return state.set('media_modal', ImmutableMap({ return state.set('media_modal', ImmutableMap({
id: action.id, id: action.id,
@ -416,6 +416,7 @@ export default function compose(state = initialState, action) {
focusY: media.getIn(['meta', 'focus', 'y'], 0), focusY: media.getIn(['meta', 'focus', 'y'], 0),
dirty: false, dirty: false,
})); }));
}
case COMPOSE_CHANGE_MEDIA_DESCRIPTION: case COMPOSE_CHANGE_MEDIA_DESCRIPTION:
return state.setIn(['media_modal', 'description'], action.description).setIn(['media_modal', 'dirty'], true); return state.setIn(['media_modal', 'description'], action.description).setIn(['media_modal', 'dirty'], true);
case COMPOSE_CHANGE_MEDIA_FOCUS: case COMPOSE_CHANGE_MEDIA_FOCUS:

View file

@ -206,7 +206,13 @@ function processNewNotification(
groups: NotificationGroupsState['groups'], groups: NotificationGroupsState['groups'],
notification: ApiNotificationJSON, notification: ApiNotificationJSON,
) { ) {
if (shouldGroupNotificationType(notification.type)) { if (!shouldGroupNotificationType(notification.type)) {
notification = {
...notification,
group_key: `ungrouped-${notification.id}`,
};
}
const existingGroupIndex = groups.findIndex( const existingGroupIndex = groups.findIndex(
(group) => (group) =>
group.type !== 'gap' && group.group_key === notification.group_key, group.type !== 'gap' && group.group_key === notification.group_key,
@ -242,15 +248,12 @@ function processNewNotification(
mergeGapsAround(groups, existingGroupIndex); mergeGapsAround(groups, existingGroupIndex);
groups.unshift(existingGroup); groups.unshift(existingGroup);
return;
} }
} } else {
}
// We have not found an existing group, create a new one // We have not found an existing group, create a new one
groups.unshift(createNotificationGroupFromNotificationJSON(notification)); groups.unshift(createNotificationGroupFromNotificationJSON(notification));
} }
}
function trimNotifications(state: NotificationGroupsState) { function trimNotifications(state: NotificationGroupsState) {
if (state.scrolledToTop && state.groups.length > NOTIFICATIONS_TRIM_LIMIT) { if (state.scrolledToTop && state.groups.length > NOTIFICATIONS_TRIM_LIMIT) {

View file

@ -298,9 +298,10 @@ export default function notifications(state = initialState, action) {
return action.payload.timeline === 'home' ? return action.payload.timeline === 'home' ?
state.update(action.payload.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items) : state.update(action.payload.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items) :
state; state;
case NOTIFICATIONS_MARK_AS_READ: case NOTIFICATIONS_MARK_AS_READ: {
const lastNotification = state.get('items').find(item => item !== null); const lastNotification = state.get('items').find(item => item !== null);
return lastNotification ? recountUnread(state, lastNotification.get('id')) : state; return lastNotification ? recountUnread(state, lastNotification.get('id')) : state;
}
case NOTIFICATIONS_SET_BROWSER_SUPPORT: case NOTIFICATIONS_SET_BROWSER_SUPPORT:
return state.set('browserSupport', action.value); return state.set('browserSupport', action.value);
case NOTIFICATIONS_SET_BROWSER_PERMISSION: case NOTIFICATIONS_SET_BROWSER_PERMISSION:

View file

@ -72,9 +72,10 @@ export default function search(state = initialState, action) {
}); });
case SEARCH_EXPAND_REQUEST: case SEARCH_EXPAND_REQUEST:
return state.set('type', action.searchType).set('isLoading', true); return state.set('type', action.searchType).set('isLoading', true);
case SEARCH_EXPAND_SUCCESS: case SEARCH_EXPAND_SUCCESS: {
const results = action.searchType === 'hashtags' ? ImmutableOrderedSet(fromJS(action.results.hashtags)) : action.results[action.searchType].map(item => item.id); const results = action.searchType === 'hashtags' ? ImmutableOrderedSet(fromJS(action.results.hashtags)) : action.results[action.searchType].map(item => item.id);
return state.updateIn(['results', action.searchType], list => list.union(results)).set('isLoading', false); return state.updateIn(['results', action.searchType], list => list.union(results)).set('isLoading', false);
}
case SEARCH_HISTORY_UPDATE: case SEARCH_HISTORY_UPDATE:
return state.set('recent', ImmutableOrderedSet(fromJS(action.recent))); return state.set('recent', ImmutableOrderedSet(fromJS(action.recent)));
default: default:

View file

@ -6,6 +6,12 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const { defineMessages } = require('react-intl');
const messages = defineMessages({
mentioned_you: { id: 'notification.mentioned_you', defaultMessage: '{name} mentioned you' },
});
const filtered = {}; const filtered = {};
const filenames = fs.readdirSync(path.resolve(__dirname, '../locales')); const filenames = fs.readdirSync(path.resolve(__dirname, '../locales'));
@ -20,7 +26,7 @@ filenames.forEach(filename => {
'notification.favourite': full['notification.favourite'] || '', 'notification.favourite': full['notification.favourite'] || '',
'notification.follow': full['notification.follow'] || '', 'notification.follow': full['notification.follow'] || '',
'notification.follow_request': full['notification.follow_request'] || '', 'notification.follow_request': full['notification.follow_request'] || '',
'notification.mention': full['notification.mention'] || '', 'notification.mention': full[messages.mentioned_you.id] || '',
'notification.reblog': full['notification.reblog'] || '', 'notification.reblog': full['notification.reblog'] || '',
'notification.poll': full['notification.poll'] || '', 'notification.poll': full['notification.poll'] || '',
'notification.status': full['notification.status'] || '', 'notification.status': full['notification.status'] || '',

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M280-280q17 0 28.5-11.5T320-320q0-17-11.5-28.5T280-360q-17 0-28.5 11.5T240-320q0 17 11.5 28.5T280-280Zm-40-160h80v-240h-80v240Zm200 160h280v-80H440v80Zm0-160h280v-80H440v80Zm0-160h280v-80H440v80ZM160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Z"/></svg>

After

Width:  |  Height:  |  Size: 419 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M280-280q17 0 28.5-11.5T320-320q0-17-11.5-28.5T280-360q-17 0-28.5 11.5T240-320q0 17 11.5 28.5T280-280Zm-40-160h80v-240h-80v240Zm200 160h280v-80H440v80Zm0-160h280v-80H440v80Zm0-160h280v-80H440v80ZM160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Zm0-80h640v-560H160v560Zm0 0v-560 560Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M280-280q17 0 28.5-11.5T320-320q0-17-11.5-28.5T280-360q-17 0-28.5 11.5T240-320q0 17 11.5 28.5T280-280Zm-40-160h80v-240h-80v240Zm200 160h280v-80H440v80Zm0-160h280v-80H440v80Zm0-160h280v-80H440v80ZM160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Zm0-80h640v-560H160v560Zm0 0v-560 560Z"/></svg>

Before

Width:  |  Height:  |  Size: 475 B

After

Width:  |  Height:  |  Size: 456 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M838-65 720-183v89h-80v-226h226v80h-90l118 118-56 57ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 20-2 40t-6 40h-82q5-20 7.5-40t2.5-40q0-20-2.5-40t-7.5-40H654q3 20 4.5 40t1.5 40q0 20-1.5 40t-4.5 40h-80q3-20 4.5-40t1.5-40q0-20-1.5-40t-4.5-40H386q-3 20-4.5 40t-1.5 40q0 20 1.5 40t4.5 40h134v80H404q12 43 31 82.5t45 75.5q20 0 40-2.5t40-4.5v82q-20 2-40 4.5T480-80ZM170-400h136q-3-20-4.5-40t-1.5-40q0-20 1.5-40t4.5-40H170q-5 20-7.5 40t-2.5 40q0 20 2.5 40t7.5 40Zm34-240h118q9-37 22.5-72.5T376-782q-55 18-99 54.5T204-640Zm172 462q-18-34-31.5-69.5T322-320H204q29 51 73 87.5t99 54.5Zm28-462h152q-12-43-31-82.5T480-798q-26 36-45 75.5T404-640Zm234 0h118q-29-51-73-87.5T584-782q18 34 31.5 69.5T638-640Z"/></svg>

After

Width:  |  Height:  |  Size: 898 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M838-65 720-183v89h-80v-226h226v80h-90l118 118-56 57ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 20-2 40t-6 40h-82q5-20 7.5-40t2.5-40q0-20-2.5-40t-7.5-40H654q3 20 4.5 40t1.5 40q0 20-1.5 40t-4.5 40h-80q3-20 4.5-40t1.5-40q0-20-1.5-40t-4.5-40H386q-3 20-4.5 40t-1.5 40q0 20 1.5 40t4.5 40h134v80H404q12 43 31 82.5t45 75.5q20 0 40-2.5t40-4.5v82q-20 2-40 4.5T480-80ZM170-400h136q-3-20-4.5-40t-1.5-40q0-20 1.5-40t4.5-40H170q-5 20-7.5 40t-2.5 40q0 20 2.5 40t7.5 40Zm34-240h118q9-37 22.5-72.5T376-782q-55 18-99 54.5T204-640Zm172 462q-18-34-31.5-69.5T322-320H204q29 51 73 87.5t99 54.5Zm28-462h152q-12-43-31-82.5T480-798q-26 36-45 75.5T404-640Zm234 0h118q-29-51-73-87.5T584-782q18 34 31.5 69.5T638-640Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M838-65 720-183v89h-80v-226h226v80h-90l118 118-56 57ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 20-2 40t-6 40h-82q5-20 7.5-40t2.5-40q0-20-2.5-40t-7.5-40H654q3 20 4.5 40t1.5 40q0 20-1.5 40t-4.5 40h-80q3-20 4.5-40t1.5-40q0-20-1.5-40t-4.5-40H386q-3 20-4.5 40t-1.5 40q0 20 1.5 40t4.5 40h134v80H404q12 43 31 82.5t45 75.5q20 0 40-2.5t40-4.5v82q-20 2-40 4.5T480-80ZM170-400h136q-3-20-4.5-40t-1.5-40q0-20 1.5-40t4.5-40H170q-5 20-7.5 40t-2.5 40q0 20 2.5 40t7.5 40Zm34-240h118q9-37 22.5-72.5T376-782q-55 18-99 54.5T204-640Zm172 462q-18-34-31.5-69.5T322-320H204q29 51 73 87.5t99 54.5Zm28-462h152q-12-43-31-82.5T480-798q-26 36-45 75.5T404-640Zm234 0h118q-29-51-73-87.5T584-782q18 34 31.5 69.5T638-640Z"/></svg>

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 898 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Z"/></svg>

After

Width:  |  Height:  |  Size: 205 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z"/></svg>

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 253 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Z"/></svg>

After

Width:  |  Height:  |  Size: 254 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Zm0-80h480q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41Zm220-240Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Zm0-80h480q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41Zm220-240Z"/></svg>

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 405 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q23-81 85.5-136T440-797v323l-64-62-56 56 160 160 160-160-56-56-64 62v-323q103 14 171.5 92.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Z"/></svg>

After

Width:  |  Height:  |  Size: 307 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q17-72 85-137t145-65q33 0 56.5 23.5T520-716v242l64-62 56 56-160 160-160-160 56-56 64 62v-242q-76 14-118 73.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41h480q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-48-22-89.5T600-680v-93q74 35 117 103.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Zm220-358Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q17-72 85-137t145-65q33 0 56.5 23.5T520-716v242l64-62 56 56-160 160-160-160 56-56 64 62v-242q-76 14-118 73.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41h480q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-48-22-89.5T600-680v-93q74 35 117 103.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H260Zm220-358Z"/></svg>

Before

Width:  |  Height:  |  Size: 488 B

After

Width:  |  Height:  |  Size: 469 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160v-80h109q-51-44-80-106t-29-134q0-112 68-197.5T400-790v84q-70 25-115 86.5T240-480q0 54 21.5 99.5T320-302v-98h80v240H160Zm440 0q-50 0-85-35t-35-85q0-48 33-82.5t81-36.5q17-36 50.5-58.5T720-480q53 0 91.5 34.5T858-360q42 0 72 29t30 70q0 42-29 71.5T860-160H600Zm116-360q-7-41-27-76t-49-62v98h-80v-240h240v80H691q43 38 70.5 89T797-520h-81Z"/></svg>

After

Width:  |  Height:  |  Size: 446 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M160-160v-80h109q-51-44-80-106t-29-134q0-112 68-197.5T400-790v84q-70 25-115 86.5T240-480q0 54 21.5 99.5T320-302v-98h80v240H160Zm440 0q-50 0-85-35t-35-85q0-48 33-82.5t81-36.5q17-36 50.5-58.5T720-480q53 0 91.5 34.5T858-360q42 0 72 29t30 70q0 42-29 71.5T860-160H600Zm116-360q-7-41-27-76t-49-62v98h-80v-240h240v80H691q43 38 70.5 89T797-520h-81ZM600-240h260q8 0 14-6t6-14q0-8-6-14t-14-6h-70v-50q0-29-20.5-49.5T720-400q-29 0-49.5 20.5T650-330v10h-50q-17 0-28.5 11.5T560-280q0 17 11.5 28.5T600-240Zm120-80Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160v-80h109q-51-44-80-106t-29-134q0-112 68-197.5T400-790v84q-70 25-115 86.5T240-480q0 54 21.5 99.5T320-302v-98h80v240H160Zm440 0q-50 0-85-35t-35-85q0-48 33-82.5t81-36.5q17-36 50.5-58.5T720-480q53 0 91.5 34.5T858-360q42 0 72 29t30 70q0 42-29 71.5T860-160H600Zm116-360q-7-41-27-76t-49-62v98h-80v-240h240v80H691q43 38 70.5 89T797-520h-81ZM600-240h260q8 0 14-6t6-14q0-8-6-14t-14-6h-70v-50q0-29-20.5-49.5T720-400q-29 0-49.5 20.5T650-330v10h-50q-17 0-28.5 11.5T560-280q0 17 11.5 28.5T600-240Zm120-80Z"/></svg>

Before

Width:  |  Height:  |  Size: 624 B

After

Width:  |  Height:  |  Size: 605 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-160H260q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H520v-286l64 62 56-56-160-160-160 160 56 56 64-62v286Z"/></svg>

After

Width:  |  Height:  |  Size: 307 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H520q-33 0-56.5-23.5T440-240v-206l-64 62-56-56 160-160 160 160-56 56-64-62v206h220q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41h100v80H260Zm220-280Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H520q-33 0-56.5-23.5T440-240v-206l-64 62-56-56 160-160 160 160-56 56-64-62v206h220q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41h100v80H260Zm220-280Z"/></svg>

Before

Width:  |  Height:  |  Size: 503 B

After

Width:  |  Height:  |  Size: 484 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z"/></svg>

After

Width:  |  Height:  |  Size: 209 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z"/></svg>

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 209 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-240q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160ZM40-120v-80h880v80H40Z"/></svg>

After

Width:  |  Height:  |  Size: 246 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z"/></svg>

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 283 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M560-520h280v-200H560v200Zm140-50-100-70v-40l100 70 100-70v40l-100 70ZM80-120q-33 0-56.5-23.5T0-200v-560q0-33 23.5-56.5T80-840h800q33 0 56.5 23.5T960-760v560q0 33-23.5 56.5T880-120H80Zm280-280q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM84-200h552q-42-75-116-117.5T360-360q-86 0-160 42.5T84-200Z"/></svg>

After

Width:  |  Height:  |  Size: 429 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M560-520h280v-200H560v200Zm140-50-100-70v-40l100 70 100-70v40l-100 70ZM80-120q-33 0-56.5-23.5T0-200v-560q0-33 23.5-56.5T80-840h800q33 0 56.5 23.5T960-760v560q0 33-23.5 56.5T880-120H80Zm556-80h244v-560H80v560h4q42-75 116-117.5T360-360q86 0 160 42.5T636-200ZM360-400q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM182-200h356q-34-38-80.5-59T360-280q-51 0-97 21t-81 59Zm178-280q-17 0-28.5-11.5T320-520q0-17 11.5-28.5T360-560q17 0 28.5 11.5T400-520q0 17-11.5 28.5T360-480Zm120 0Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M560-520h280v-200H560v200Zm140-50-100-70v-40l100 70 100-70v40l-100 70ZM80-120q-33 0-56.5-23.5T0-200v-560q0-33 23.5-56.5T80-840h800q33 0 56.5 23.5T960-760v560q0 33-23.5 56.5T880-120H80Zm556-80h244v-560H80v560h4q42-75 116-117.5T360-360q86 0 160 42.5T636-200ZM360-400q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM182-200h356q-34-38-80.5-59T360-280q-51 0-97 21t-81 59Zm178-280q-17 0-28.5-11.5T320-520q0-17 11.5-28.5T360-560q17 0 28.5 11.5T400-520q0 17-11.5 28.5T360-480Zm120 0Z"/></svg>

Before

Width:  |  Height:  |  Size: 625 B

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-520q150 0 255-47t105-113q0-66-105-113t-255-47q-150 0-255 47T120-680q0 66 105 113t255 47Zm0 100q41 0 102.5-8.5T701-456q57-19 98-49.5t41-74.5v100q0 44-41 74.5T701-356q-57 19-118.5 27.5T480-320q-41 0-102.5-8.5T259-356q-57-19-98-49.5T120-480v-100q0 44 41 74.5t98 49.5q57 19 118.5 27.5T480-420Zm0 200q41 0 102.5-8.5T701-256q57-19 98-49.5t41-74.5v100q0 44-41 74.5T701-156q-57 19-118.5 27.5T480-120q-41 0-102.5-8.5T259-156q-57-19-98-49.5T120-280v-100q0 44 41 74.5t98 49.5q57 19 118.5 27.5T480-220Z"/></svg>

After

Width:  |  Height:  |  Size: 601 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-120q-151 0-255.5-46.5T120-280v-400q0-66 105.5-113T480-840q149 0 254.5 47T840-680v400q0 67-104.5 113.5T480-120Zm0-479q89 0 179-25.5T760-679q-11-29-100.5-55T480-760q-91 0-178.5 25.5T200-679q14 30 101.5 55T480-599Zm0 199q42 0 81-4t74.5-11.5q35.5-7.5 67-18.5t57.5-25v-120q-26 14-57.5 25t-67 18.5Q600-528 561-524t-81 4q-42 0-82-4t-75.5-11.5Q287-543 256-554t-56-25v120q25 14 56 25t66.5 18.5Q358-408 398-404t82 4Zm0 200q46 0 93.5-7t87.5-18.5q40-11.5 67-26t32-29.5v-98q-26 14-57.5 25t-67 18.5Q600-328 561-324t-81 4q-42 0-82-4t-75.5-11.5Q287-343 256-354t-56-25v99q5 15 31.5 29t66.5 25.5q40 11.5 88 18.5t94 7Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-120q-151 0-255.5-46.5T120-280v-400q0-66 105.5-113T480-840q149 0 254.5 47T840-680v400q0 67-104.5 113.5T480-120Zm0-479q89 0 179-25.5T760-679q-11-29-100.5-55T480-760q-91 0-178.5 25.5T200-679q14 30 101.5 55T480-599Zm0 199q42 0 81-4t74.5-11.5q35.5-7.5 67-18.5t57.5-25v-120q-26 14-57.5 25t-67 18.5Q600-528 561-524t-81 4q-42 0-82-4t-75.5-11.5Q287-543 256-554t-56-25v120q25 14 56 25t66.5 18.5Q358-408 398-404t82 4Zm0 200q46 0 93.5-7t87.5-18.5q40-11.5 67-26t32-29.5v-98q-26 14-57.5 25t-67 18.5Q600-328 561-324t-81 4q-42 0-82-4t-75.5-11.5Q287-343 256-354t-56-25v99q5 15 31.5 29t66.5 25.5q40 11.5 88 18.5t94 7Z"/></svg>

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 710 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m368-630 106-210h12l106 210H368Zm82 474L105-570h345v414Zm60 0v-414h345L510-156Zm148-474L554-840h206l105 210H658Zm-563 0 105-210h206L302-630H95Z"/></svg>

After

Width:  |  Height:  |  Size: 249 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-120 80-600l120-240h560l120 240-400 480Zm-95-520h190l-60-120h-70l-60 120Zm55 347v-267H218l222 267Zm80 0 222-267H520v267Zm144-347h106l-60-120H604l60 120Zm-474 0h106l60-120H250l-60 120Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-120 80-600l120-240h560l120 240-400 480Zm-95-520h190l-60-120h-70l-60 120Zm55 347v-267H218l222 267Zm80 0 222-267H520v267Zm144-347h106l-60-120H604l60 120Zm-474 0h106l60-120H250l-60 120Z"/></svg>

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 293 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-160q-17 0-28.5-11.5T400-200v-240L168-736q-15-20-4.5-42t36.5-22h560q26 0 36.5 22t-4.5 42L560-440v240q0 17-11.5 28.5T520-160h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 238 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M440-160q-17 0-28.5-11.5T400-200v-240L168-736q-15-20-4.5-42t36.5-22h560q26 0 36.5 22t-4.5 42L560-440v240q0 17-11.5 28.5T520-160h-80Zm40-308 198-252H282l198 252Zm0 0Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-160q-17 0-28.5-11.5T400-200v-240L168-736q-15-20-4.5-42t36.5-22h560q26 0 36.5 22t-4.5 42L560-440v240q0 17-11.5 28.5T520-160h-80Zm40-308 198-252H282l198 252Zm0 0Z"/></svg>

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 271 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M0-240v-63q0-43 44-70t116-27q13 0 25 .5t23 2.5q-14 21-21 44t-7 48v65H0Zm240 0v-65q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v65H240Zm540 0v-65q0-26-6.5-49T754-397q11-2 22.5-2.5t23.5-.5q72 0 116 26.5t44 70.5v63H780ZM160-440q-33 0-56.5-23.5T80-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T160-440Zm640 0q-33 0-56.5-23.5T720-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T800-440Zm-320-40q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Z"/></svg>

After

Width:  |  Height:  |  Size: 639 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M0-240v-63q0-43 44-70t116-27q13 0 25 .5t23 2.5q-14 21-21 44t-7 48v65H0Zm240 0v-65q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v65H240Zm540 0v-65q0-26-6.5-49T754-397q11-2 22.5-2.5t23.5-.5q72 0 116 26.5t44 70.5v63H780Zm-455-80h311q-10-20-55.5-35T480-370q-55 0-100.5 15T325-320ZM160-440q-33 0-56.5-23.5T80-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T160-440Zm640 0q-33 0-56.5-23.5T720-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T800-440Zm-320-40q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Zm0-80q17 0 28.5-11.5T520-600q0-17-11.5-28.5T480-640q-17 0-28.5 11.5T440-600q0 17 11.5 28.5T480-560Zm1 240Zm-1-280Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M0-240v-63q0-43 44-70t116-27q13 0 25 .5t23 2.5q-14 21-21 44t-7 48v65H0Zm240 0v-65q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v65H240Zm540 0v-65q0-26-6.5-49T754-397q11-2 22.5-2.5t23.5-.5q72 0 116 26.5t44 70.5v63H780Zm-455-80h311q-10-20-55.5-35T480-370q-55 0-100.5 15T325-320ZM160-440q-33 0-56.5-23.5T80-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T160-440Zm640 0q-33 0-56.5-23.5T720-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T800-440Zm-320-40q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Zm0-80q17 0 28.5-11.5T520-600q0-17-11.5-28.5T480-640q-17 0-28.5 11.5T440-600q0 17 11.5 28.5T480-560Zm1 240Zm-1-280Z"/></svg>

Before

Width:  |  Height:  |  Size: 831 B

After

Width:  |  Height:  |  Size: 812 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m791-55-91-91q-49 32-104.5 49T480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-60 17-115.5T146-700l-91-91 57-57 736 736-57 57Zm23-205L260-814q49-32 104.5-49T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 60-17 115.5T814-260Z"/></svg>

After

Width:  |  Height:  |  Size: 344 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="m791-55-91-91q-49 32-104.5 49T480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-60 17-115.5T146-700l-91-91 57-57 736 736-57 57ZM480-160q43 0 83.5-11t78.5-33L204-642q-22 38-33 78.5T160-480q0 133 93.5 226.5T480-160Zm334-100-58-58q22-38 33-78.5t11-83.5q0-133-93.5-226.5T480-800q-43 0-83.5 11T318-756l-58-58q49-32 104.5-49T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 60-17 115.5T814-260ZM537-537ZM423-423Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m791-55-91-91q-49 32-104.5 49T480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-60 17-115.5T146-700l-91-91 57-57 736 736-57 57ZM480-160q43 0 83.5-11t78.5-33L204-642q-22 38-33 78.5T160-480q0 133 93.5 226.5T480-160Zm334-100-58-58q22-38 33-78.5t11-83.5q0-133-93.5-226.5T480-800q-43 0-83.5 11T318-756l-58-58q49-32 104.5-49T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 60-17 115.5T814-260ZM537-537ZM423-423Z"/></svg>

Before

Width:  |  Height:  |  Size: 542 B

After

Width:  |  Height:  |  Size: 523 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm280-200q38 0 69-22t43-58h168v-360H200v360h168q12 36 43 58t69 22Z"/></svg>

After

Width:  |  Height:  |  Size: 290 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-120H640q-30 38-71.5 59T480-240q-47 0-88.5-21T320-320H200v120Zm280-120q38 0 69-22t43-58h168v-360H200v360h168q12 36 43 58t69 22ZM200-200h560-560Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-120H640q-30 38-71.5 59T480-240q-47 0-88.5-21T320-320H200v120Zm280-120q38 0 69-22t43-58h168v-360H200v360h168q12 36 43 58t69 22ZM200-200h560-560Z"/></svg>

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 379 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M280-600v-80h560v80H280Zm0 160v-80h560v80H280Zm0 160v-80h560v80H280ZM160-600q-17 0-28.5-11.5T120-640q0-17 11.5-28.5T160-680q17 0 28.5 11.5T200-640q0 17-11.5 28.5T160-600Zm0 160q-17 0-28.5-11.5T120-480q0-17 11.5-28.5T160-520q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440Zm0 160q-17 0-28.5-11.5T120-320q0-17 11.5-28.5T160-360q17 0 28.5 11.5T200-320q0 17-11.5 28.5T160-280Z"/></svg>

After

Width:  |  Height:  |  Size: 476 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M280-600v-80h560v80H280Zm0 160v-80h560v80H280Zm0 160v-80h560v80H280ZM160-600q-17 0-28.5-11.5T120-640q0-17 11.5-28.5T160-680q17 0 28.5 11.5T200-640q0 17-11.5 28.5T160-600Zm0 160q-17 0-28.5-11.5T120-480q0-17 11.5-28.5T160-520q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440Zm0 160q-17 0-28.5-11.5T120-320q0-17 11.5-28.5T160-360q17 0 28.5 11.5T200-320q0 17-11.5 28.5T160-280Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M280-600v-80h560v80H280Zm0 160v-80h560v80H280Zm0 160v-80h560v80H280ZM160-600q-17 0-28.5-11.5T120-640q0-17 11.5-28.5T160-680q17 0 28.5 11.5T200-640q0 17-11.5 28.5T160-600Zm0 160q-17 0-28.5-11.5T120-480q0-17 11.5-28.5T160-520q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440Zm0 160q-17 0-28.5-11.5T120-320q0-17 11.5-28.5T160-360q17 0 28.5 11.5T200-320q0 17-11.5 28.5T160-280Z"/></svg>

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 476 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280 320-200v-80L480-520 160-720v80l320 200Z"/></svg>

After

Width:  |  Height:  |  Size: 272 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/></svg>

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 309 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M620-520q25 0 42.5-17.5T680-580q0-25-17.5-42.5T620-640q-25 0-42.5 17.5T560-580q0 25 17.5 42.5T620-520Zm-280 0q25 0 42.5-17.5T400-580q0-25-17.5-42.5T340-640q-25 0-42.5 17.5T280-580q0 25 17.5 42.5T340-520Zm140 260q68 0 123.5-38.5T684-400H276q25 63 80.5 101.5T480-260Zm0 180q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z"/></svg>

After

Width:  |  Height:  |  Size: 559 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M620-520q25 0 42.5-17.5T680-580q0-25-17.5-42.5T620-640q-25 0-42.5 17.5T560-580q0 25 17.5 42.5T620-520Zm-280 0q25 0 42.5-17.5T400-580q0-25-17.5-42.5T340-640q-25 0-42.5 17.5T280-580q0 25 17.5 42.5T340-520Zm140 260q68 0 123.5-38.5T684-400H276q25 63 80.5 101.5T480-260Zm0 180q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M620-520q25 0 42.5-17.5T680-580q0-25-17.5-42.5T620-640q-25 0-42.5 17.5T560-580q0 25 17.5 42.5T620-520Zm-280 0q25 0 42.5-17.5T400-580q0-25-17.5-42.5T340-640q-25 0-42.5 17.5T280-580q0 25 17.5 42.5T340-520Zm140 260q68 0 123.5-38.5T684-400H276q25 63 80.5 101.5T480-260Zm0 180q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Z"/></svg>

Before

Width:  |  Height:  |  Size: 675 B

After

Width:  |  Height:  |  Size: 656 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240ZM330-120 120-330v-300l210-210h300l210 210v300L630-120H330Z"/></svg>

After

Width:  |  Height:  |  Size: 291 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240ZM330-120 120-330v-300l210-210h300l210 210v300L630-120H330Zm34-80h232l164-164v-232L596-760H364L200-596v232l164 164Zm116-280Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240ZM330-120 120-330v-300l210-210h300l210 210v300L630-120H330Zm34-80h232l164-164v-232L596-760H364L200-596v232l164 164Zm116-280Z"/></svg>

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 356 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-200q83 0 141.5-58.5T680-480q0-83-58.5-141.5T480-680q-83 0-141.5 58.5T280-480q0 83 58.5 141.5T480-280Zm66-106-86-86v-128h40v112l74 74-28 28Z"/></svg>

After

Width:  |  Height:  |  Size: 333 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-280q83 0 141.5-58.5T680-480q0-83-58.5-141.5T480-680q-83 0-141.5 58.5T280-480q0 83 58.5 141.5T480-280Zm66-106-86-86v-128h40v112l74 74-28 28ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q104-33 172-132t68-220v-189l-240-90-240 90v189q0 121 68 220t172 132Zm0-316Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-280q83 0 141.5-58.5T680-480q0-83-58.5-141.5T480-680q-83 0-141.5 58.5T280-480q0 83 58.5 141.5T480-280Zm66-106-86-86v-128h40v112l74 74-28 28ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q104-33 172-132t68-220v-189l-240-90-240 90v189q0 121 68 220t172 132Zm0-316Z"/></svg>

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 415 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M418-340q25 25 63 23.5t55-27.5l224-336-336 224q-26 18-28.5 54.5T418-340ZM204-160q-22 0-40.5-9.5T134-198q-26-47-40-97.5T80-400q0-83 31.5-156T197-683q54-54 127-85.5T480-800q82 0 154 31t126 84.5q54 53.5 86 125T879-406q1 55-12.5 107.5T825-198q-11 19-29.5 28.5T755-160H204Z"/></svg>

After

Width:  |  Height:  |  Size: 374 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M418-340q24 24 62 23.5t56-27.5l224-336-336 224q-27 18-28.5 55t22.5 61Zm62-460q59 0 113.5 16.5T696-734l-76 48q-33-17-68.5-25.5T480-720q-133 0-226.5 93.5T160-400q0 42 11.5 83t32.5 77h552q23-38 33.5-79t10.5-85q0-36-8.5-70T766-540l48-76q30 47 47.5 100T880-406q1 57-13 109t-41 99q-11 18-30 28t-40 10H204q-21 0-40-10t-30-28q-26-45-40-95.5T80-400q0-83 31.5-155.5t86-127Q252-737 325-768.5T480-800Zm7 313Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M418-340q24 24 62 23.5t56-27.5l224-336-336 224q-27 18-28.5 55t22.5 61Zm62-460q59 0 113.5 16.5T696-734l-76 48q-33-17-68.5-25.5T480-720q-133 0-226.5 93.5T160-400q0 42 11.5 83t32.5 77h552q23-38 33.5-79t10.5-85q0-36-8.5-70T766-540l48-76q30 47 47.5 100T880-406q1 57-13 109t-41 99q-11 18-30 28t-40 10H204q-21 0-40-10t-30-28q-26-45-40-95.5T80-400q0-83 31.5-155.5t86-127Q252-737 325-768.5T480-800Zm7 313Z"/></svg>

Before

Width:  |  Height:  |  Size: 521 B

After

Width:  |  Height:  |  Size: 502 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m136-240-56-56 296-298 160 160 208-206H640v-80h240v240h-80v-104L536-320 376-480 136-240Z"/></svg>

After

Width:  |  Height:  |  Size: 194 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="m136-240-56-56 296-298 160 160 208-206H640v-80h240v240h-80v-104L536-320 376-480 136-240Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m136-240-56-56 296-298 160 160 208-206H640v-80h240v240h-80v-104L536-320 376-480 136-240Z"/></svg>

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 194 B

View file

@ -226,6 +226,10 @@ $content-width: 840px;
gap: 5px; gap: 5px;
white-space: nowrap; white-space: nowrap;
@media screen and (max-width: $mobile-breakpoint) {
flex: 1 0 50%;
}
&:hover, &:hover,
&:focus, &:focus,
&:active { &:active {

View file

@ -141,6 +141,7 @@ body {
width: 100%; width: 100%;
height: auto; height: auto;
margin-top: -120px; margin-top: -120px;
margin-bottom: -45px;
} }
} }

View file

@ -3611,6 +3611,7 @@ $ui-header-logo-wordmark-width: 99px;
overflow-y: auto; overflow-y: auto;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 0;
} }
.drawer__inner__mastodon { .drawer__inner__mastodon {

View file

@ -42,6 +42,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def process_status def process_status
@tags = [] @tags = []
@mentions = [] @mentions = []
@unresolved_mentions = []
@silenced_account_ids = [] @silenced_account_ids = []
@params = {} @params = {}
@ -55,6 +56,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end end
resolve_thread(@status) resolve_thread(@status)
resolve_unresolved_mentions(@status)
fetch_replies(@status) fetch_replies(@status)
distribute distribute
forward_for_reply forward_for_reply
@ -197,6 +199,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return if account.nil? return if account.nil?
@mentions << Mention.new(account: account, silent: false) @mentions << Mention.new(account: account, silent: false)
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
@unresolved_mentions << tag['href']
end end
def process_emoji(tag) def process_emoji(tag)
@ -301,6 +305,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
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 resolve_unresolved_mentions(status)
@unresolved_mentions.uniq.each do |uri|
MentionResolveWorker.perform_in(rand(30...600).seconds, status.id, uri, { 'request_id' => @options[:request_id] })
end
end
def fetch_replies(status) def fetch_replies(status)
collection = @object['replies'] collection = @object['replies']
return if collection.blank? return if collection.blank?

View file

@ -9,10 +9,10 @@ class Vacuum::ImportsVacuum
private private
def clean_unconfirmed_imports! def clean_unconfirmed_imports!
BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).reorder(nil).in_batches.delete_all BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).in_batches.delete_all
end end
def clean_old_imports! def clean_old_imports!
BulkImport.where(created_at: ..1.week.ago).reorder(nil).in_batches.delete_all BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all
end end
end end

View file

@ -0,0 +1,72 @@
# frozen_string_literal: true
class WebPushRequest
SIGNATURE_ALGORITHM = 'p256ecdsa'
AUTH_HEADER = 'WebPush'
PAYLOAD_EXPIRATION = 24.hours
JWT_ALGORITHM = 'ES256'
JWT_TYPE = 'JWT'
attr_reader :web_push_subscription
delegate(
:endpoint,
:key_auth,
:key_p256dh,
to: :web_push_subscription
)
def initialize(web_push_subscription)
@web_push_subscription = web_push_subscription
end
def audience
@audience ||= Addressable::URI.parse(endpoint).normalized_site
end
def authorization_header
[AUTH_HEADER, encoded_json_web_token].join(' ')
end
def crypto_key_header
[SIGNATURE_ALGORITHM, vapid_key.public_key_for_push_header].join('=')
end
def encrypt(payload)
Webpush::Encryption.encrypt(payload, key_p256dh, key_auth)
end
private
def encoded_json_web_token
JWT.encode(
web_token_payload,
vapid_key.curve,
JWT_ALGORITHM,
typ: JWT_TYPE
)
end
def web_token_payload
{
aud: audience,
exp: PAYLOAD_EXPIRATION.from_now.to_i,
sub: payload_subject,
}
end
def payload_subject
[:mailto, contact_email].join(':')
end
def vapid_key
@vapid_key ||= Webpush::VapidKey.from_keys(
Rails.configuration.x.vapid_public_key,
Rails.configuration.x.vapid_private_key
)
end
def contact_email
@contact_email ||= ::Setting.site_contact_email
end
end

View file

@ -86,7 +86,7 @@ class NotificationMailer < ApplicationMailer
end end
def thread_by_conversation! def thread_by_conversation!
return if @status.conversation.nil? return if @status&.conversation.nil?
conversation_message_id = "<conversation-#{@status.conversation.id}.#{@status.conversation.created_at.to_date}@#{Rails.configuration.x.local_domain}>" conversation_message_id = "<conversation-#{@status.conversation.id}.#{@status.conversation.created_at.to_date}@#{Rails.configuration.x.local_domain}>"

View file

@ -21,7 +21,7 @@ class AccountFilter
end end
def results def results
scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor.reorder(nil) scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor
relevant_params.each do |key, value| relevant_params.each do |key, value|
next if key.to_s == 'page' next if key.to_s == 'page'

View file

@ -14,7 +14,7 @@ class Admin::TagFilter
end end
def results def results
scope = Tag.reorder(nil) scope = Tag.all
params.each do |key, value| params.each do |key, value|
next if key == :page next if key == :page

View file

@ -6,10 +6,13 @@ module Account::Avatar
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze
LIMIT = 2.megabytes LIMIT = 2.megabytes
AVATAR_DIMENSIONS = [400, 400].freeze
AVATAR_GEOMETRY = [AVATAR_DIMENSIONS.first, AVATAR_DIMENSIONS.last].join('x')
class_methods do class_methods do
def avatar_styles(file) def avatar_styles(file)
styles = { original: { geometry: '400x400#', file_geometry_parser: FastGeometryParser } } styles = { original: { geometry: "#{AVATAR_GEOMETRY}#", file_geometry_parser: FastGeometryParser } }
styles[:static] = { geometry: '400x400#', format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif' styles[:static] = { geometry: "#{AVATAR_GEOMETRY}#", format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif'
styles styles
end end

View file

@ -5,7 +5,10 @@ module Account::Header
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze
LIMIT = 2.megabytes LIMIT = 2.megabytes
MAX_PIXELS = 750_000 # 1500x500px
HEADER_DIMENSIONS = [1500, 500].freeze
HEADER_GEOMETRY = [HEADER_DIMENSIONS.first, HEADER_DIMENSIONS.last].join('x')
MAX_PIXELS = HEADER_DIMENSIONS.first * HEADER_DIMENSIONS.last
class_methods do class_methods do
def header_styles(file) def header_styles(file)

View file

@ -55,42 +55,6 @@ class Export
end end
end end
def total_storage
account.media_attachments.sum(:file_file_size)
end
def total_statuses
account.statuses_count
end
def total_bookmarks
account.bookmarks.count
end
def total_follows
account.following_count
end
def total_lists
account.owned_lists.count
end
def total_followers
account.followers_count
end
def total_blocks
account.blocking.count
end
def total_mutes
account.muting.count
end
def total_domain_blocks
account.domain_blocks.count
end
private private
def to_csv(accounts) def to_csv(accounts)

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