Merge remote-tracking branch 'parent/main' into upstream-20241113

This commit is contained in:
KMY 2024-11-13 08:17:38 +09:00
commit 910eafda63
177 changed files with 1625 additions and 659 deletions

View file

@ -2,6 +2,48 @@
All notable changes to this project will be documented in this file.
## [4.3.1] - 2024-10-21
### Added
- Add more explicit explanations about author attribution and `fediverse:creator` (#32383 by @ClearlyClaire)
- Add ability to group follow notifications in WebUI, can be disabled in the column settings (#32520 by @renchap)
- Add back a 6 hours mute duration option (#32522 by @renchap)
- Add note about not changing ActiveRecord encryption secrets once they are set (#32413, #32476, #32512, and #32537 by @ClearlyClaire and @mjankowski)
### Changed
- Change translation feature to translate to selected regional variant (e.g. pt-BR) if available (#32428 by @c960657)
### Removed
- Remove ability to get embed code for remote posts (#32578 by @ClearlyClaire)\
Getting the embed code is only reliable for local posts.\
It never worked for non-Mastodon servers, and stopped working correctly with the changes made in 4.3.0.\
We have therefore decided to remove the menu entry while we investigate solutions.
### Fixed
- Fix follow recommendation moderation page default language when using regional variant (#32580 by @ClearlyClaire)
- Fix column-settings spacing in local timeline in advanced view (#32567 by @lindwurm)
- Fix broken i18n in text welcome mailer tags area (#32571 by @mjankowski)
- Fix missing or incorrect cache-control headers for Streaming server (#32551 by @ThisIsMissEm)
- Fix only the first paragraph being displayed in some notifications (#32348 by @ClearlyClaire)
- Fix reblog icons on account media view (#32506 by @tribela)
- Fix Content-Security-Policy not allowing OpenStack SWIFT object storage URI (#32439 by @kenkiku1021)
- Fix back arrow pointing to the incorrect direction in RTL languages (#32485 by @renchap)
- Fix streaming server using `REDIS_USERNAME` instead of `REDIS_USER` (#32493 by @ThisIsMissEm)
- Fix follow recommendation carrousel scrolling on RTL layouts (#32462 and #32505 by @ClearlyClaire)
- Fix follow recommendation suppressions not applying immediately (#32392 by @ClearlyClaire)
- Fix language of push notifications (#32415 by @ClearlyClaire)
- Fix mute duration not being shown in list of muted accounts in web UI (#32388 by @ClearlyClaire)
- Fix “Mark every notification as read” not updating the read marker if scrolled down (#32385 by @ClearlyClaire)
- Fix “Mention” appearing for otherwise filtered posts (#32356 by @ClearlyClaire)
- Fix notification requests from suspended accounts still being listed (#32354 by @ClearlyClaire)
- Fix list edition modal styling (#32358 and #32367 by @ClearlyClaire and @vmstan)
- Fix 4 columns barely not fitting on 1920px screen (#32361 by @ClearlyClaire)
- Fix icon alignment in applications list (#32293 by @mjankowski)
## [4.3.0] - 2024-10-08
The following changelog entries focus on changes visible to users, administrators, client developers or federated software developers, but there has also been a lot of code modernization, refactoring, and tooling work, in particular by @mjankowski.

View file

@ -6,7 +6,7 @@ ruby '>= 3.2.0'
gem 'propshaft'
gem 'puma', '~> 6.3'
gem 'rack', '~> 2.2.7'
gem 'rails', '~> 7.1.1'
gem 'rails', '~> 7.2.0'
gem 'thor', '~> 1.2'
gem 'dotenv'
@ -63,6 +63,7 @@ gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'mime-types', '~> 3.6.0', require: 'mime/types/columnar'
gem 'mutex_m'
gem 'nokogiri', '~> 1.15'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
@ -221,7 +222,7 @@ gem 'concurrent-ruby', require: false
gem 'connection_pool', require: false
gem 'xorcist', '~> 1.1'
gem 'net-http', '~> 0.4.0'
gem 'net-http', '~> 0.5.0'
gem 'rubyzip', '~> 2.3'
gem 'hcaptcha', '~> 7.1'

View file

@ -10,51 +10,46 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (7.1.4.2)
actionpack (= 7.1.4.2)
activesupport (= 7.1.4.2)
actioncable (7.2.2)
actionpack (= 7.2.2)
activesupport (= 7.2.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.1.4.2)
actionpack (= 7.1.4.2)
activejob (= 7.1.4.2)
activerecord (= 7.1.4.2)
activestorage (= 7.1.4.2)
activesupport (= 7.1.4.2)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.1.4.2)
actionpack (= 7.1.4.2)
actionview (= 7.1.4.2)
activejob (= 7.1.4.2)
activesupport (= 7.1.4.2)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
actionmailbox (7.2.2)
actionpack (= 7.2.2)
activejob (= 7.2.2)
activerecord (= 7.2.2)
activestorage (= 7.2.2)
activesupport (= 7.2.2)
mail (>= 2.8.0)
actionmailer (7.2.2)
actionpack (= 7.2.2)
actionview (= 7.2.2)
activejob (= 7.2.2)
activesupport (= 7.2.2)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (7.1.4.2)
actionview (= 7.1.4.2)
activesupport (= 7.1.4.2)
actionpack (7.2.2)
actionview (= 7.2.2)
activesupport (= 7.2.2)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
rack (>= 2.2.4, < 3.2)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
actiontext (7.1.4.2)
actionpack (= 7.1.4.2)
activerecord (= 7.1.4.2)
activestorage (= 7.1.4.2)
activesupport (= 7.1.4.2)
useragent (~> 0.16)
actiontext (7.2.2)
actionpack (= 7.2.2)
activerecord (= 7.2.2)
activestorage (= 7.2.2)
activesupport (= 7.2.2)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.1.4.2)
activesupport (= 7.1.4.2)
actionview (7.2.2)
activesupport (= 7.2.2)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@ -64,31 +59,33 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.1.4.2)
activesupport (= 7.1.4.2)
activejob (7.2.2)
activesupport (= 7.2.2)
globalid (>= 0.3.6)
activemodel (7.1.4.2)
activesupport (= 7.1.4.2)
activerecord (7.1.4.2)
activemodel (= 7.1.4.2)
activesupport (= 7.1.4.2)
activemodel (7.2.2)
activesupport (= 7.2.2)
activerecord (7.2.2)
activemodel (= 7.2.2)
activesupport (= 7.2.2)
timeout (>= 0.4.0)
activestorage (7.1.4.2)
actionpack (= 7.1.4.2)
activejob (= 7.1.4.2)
activerecord (= 7.1.4.2)
activesupport (= 7.1.4.2)
activestorage (7.2.2)
actionpack (= 7.2.2)
activejob (= 7.2.2)
activerecord (= 7.2.2)
activesupport (= 7.2.2)
marcel (~> 1.0)
activesupport (7.1.4.2)
activesupport (7.2.2)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
mutex_m
tzinfo (~> 2.0)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
aes_key_wrap (1.1.0)
@ -100,8 +97,8 @@ GEM
attr_required (1.0.2)
awrence (1.2.1)
aws-eventstream (1.3.0)
aws-partitions (1.997.0)
aws-sdk-core (3.211.0)
aws-partitions (1.1001.0)
aws-sdk-core (3.212.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
@ -109,7 +106,7 @@ GEM
aws-sdk-kms (1.95.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.169.0)
aws-sdk-s3 (1.170.1)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
@ -120,6 +117,7 @@ GEM
base64 (0.2.0)
bcp47_spec (0.2.1)
bcrypt (3.1.20)
benchmark (0.4.0)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
@ -416,7 +414,7 @@ GEM
msgpack (1.7.3)
multi_json (1.15.0)
mutex_m (0.2.0)
net-http (0.4.1)
net-http (0.5.0)
uri
net-imap (0.5.0)
date
@ -613,20 +611,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
rails (7.1.4.2)
actioncable (= 7.1.4.2)
actionmailbox (= 7.1.4.2)
actionmailer (= 7.1.4.2)
actionpack (= 7.1.4.2)
actiontext (= 7.1.4.2)
actionview (= 7.1.4.2)
activejob (= 7.1.4.2)
activemodel (= 7.1.4.2)
activerecord (= 7.1.4.2)
activestorage (= 7.1.4.2)
activesupport (= 7.1.4.2)
rails (7.2.2)
actioncable (= 7.2.2)
actionmailbox (= 7.2.2)
actionmailer (= 7.2.2)
actionpack (= 7.2.2)
actiontext (= 7.2.2)
actionview (= 7.2.2)
activejob (= 7.2.2)
activemodel (= 7.2.2)
activerecord (= 7.2.2)
activestorage (= 7.2.2)
activesupport (= 7.2.2)
bundler (>= 1.15.0)
railties (= 7.1.4.2)
railties (= 7.2.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@ -641,10 +639,10 @@ GEM
rails-i18n (7.0.10)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.1.4.2)
actionpack (= 7.1.4.2)
activesupport (= 7.1.4.2)
irb
railties (7.2.2)
actionpack (= 7.2.2)
activesupport (= 7.2.2)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
@ -755,6 +753,7 @@ GEM
scenic (1.8.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
securerandom (0.3.2)
selenium-webdriver (4.26.0)
base64 (~> 0.2)
logger (~> 1.4)
@ -796,7 +795,7 @@ GEM
stoplight (4.1.0)
redlock (~> 1.0)
stringio (3.1.1)
strong_migrations (2.0.2)
strong_migrations (2.1.0)
activerecord (>= 6.1)
swd (1.3.0)
activesupport (>= 3)
@ -811,7 +810,7 @@ GEM
test-prof (1.4.2)
thor (1.3.2)
tilt (2.4.0)
timeout (0.4.1)
timeout (0.4.2)
tpm-key_attestation (0.12.1)
bindata (~> 2.4)
openssl (> 2.0)
@ -838,6 +837,7 @@ GEM
unf_ext (0.0.9.1)
unicode-display_width (2.6.0)
uri (0.13.1)
useragent (0.16.10)
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
@ -946,7 +946,8 @@ DEPENDENCIES
mario-redis-lock (~> 1.2)
memory_profiler
mime-types (~> 3.6.0)
net-http (~> 0.4.0)
mutex_m
net-http (~> 0.5.0)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
oj (~> 3.14)
@ -984,7 +985,7 @@ DEPENDENCIES
rack-attack (~> 6.6)
rack-cors (~> 2.0)
rack-test (~> 2.1)
rails (~> 7.1.1)
rails (~> 7.2.0)
rails-controller-testing (~> 1.0)
rails-i18n (~> 7.0)
rdf-normalize (~> 0.5)

View file

@ -3,6 +3,6 @@
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('config/application', __dir__)
require_relative 'config/application'
Rails.application.load_tasks

View file

@ -5,7 +5,7 @@ module Admin
def index
authorize :email_domain_block, :index?
@email_domain_blocks = EmailDomainBlock.where(parent_id: nil).includes(:children).order(id: :desc).page(params[:page])
@email_domain_blocks = EmailDomainBlock.parents.includes(:children).order(id: :desc).page(params[:page])
@form = Form::EmailDomainBlockBatch.new
end

View file

@ -32,7 +32,7 @@ module Admin
def deactivate_all
authorize :invite, :deactivate_all?
Invite.available.in_batches.update_all(expires_at: Time.now.utc)
Invite.available.in_batches.touch_all(:expires_at)
redirect_to admin_invites_path
end

View file

@ -21,6 +21,7 @@ module Admin
@relay = Relay.new(resource_params)
if @relay.save
log_action :create, @relay
@relay.enable!
redirect_to admin_relays_path
else
@ -31,18 +32,21 @@ module Admin
def destroy
authorize :relay, :update?
@relay.destroy
log_action :destroy, @relay
redirect_to admin_relays_path
end
def enable
authorize :relay, :update?
@relay.enable!
log_action :enable, @relay
redirect_to admin_relays_path
end
def disable
authorize :relay, :update?
@relay.disable!
log_action :disable, @relay
redirect_to admin_relays_path
end

View file

@ -35,6 +35,8 @@ module Admin::ActionLogsHelper
else
I18n.t('admin.action_logs.deleted_account')
end
when 'Relay'
link_to log.human_identifier, admin_relays_path
end
end

View file

@ -18,6 +18,6 @@ module RegistrationHelper
end
def ip_blocked?(remote_ip)
IpBlock.where(severity: :sign_up_block).exists?(['ip >>= ?', remote_ip.to_s])
IpBlock.severity_sign_up_block.containing(remote_ip.to_s).exists?
end
end

View file

@ -7,16 +7,17 @@ export const MostUsedHashtag: React.FC<{
}> = ({ data }) => {
const hashtag = data[0];
if (!hashtag) {
return (
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag' />
);
}
return (
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag'>
<div className='annual-report__summary__most-used-hashtag__hashtag'>
#{hashtag.name}
{hashtag ? (
<>#{hashtag.name}</>
) : (
<FormattedMessage
id='annual_report.summary.most_used_hashtag.none'
defaultMessage='None'
/>
)}
</div>
<div className='annual-report__summary__most-used-hashtag__label'>
<FormattedMessage

View file

@ -22,9 +22,9 @@ export const Percentile: React.FC<{
percentage: () => (
<div className='annual-report__summary__percentile__number'>
<FormattedNumber
value={percentile / 100}
value={Math.min(percentile, 99) / 100}
style='percent'
maximumFractionDigits={1}
maximumFractionDigits={percentile < 1 ? 1 : 0}
/>
</div>
),

View file

@ -68,7 +68,7 @@ class FollowRequests extends ImmutablePureComponent {
);
return (
<Column bindToDocument={!multiColumn} icon='user-plus' iconComponent={PersonAddIcon} heading={intl.formatMessage(messages.heading)}>
<Column bindToDocument={!multiColumn} icon='user-plus' iconComponent={PersonAddIcon} heading={intl.formatMessage(messages.heading)} alwaysShowBackButton>
<ScrollableList
scrollKey='follow_requests'
onLoadMore={this.handleLoadMore}

View file

@ -512,7 +512,9 @@ class UI extends PureComponent {
}
};
handleHotkeyBack = () => {
handleHotkeyBack = e => {
e.preventDefault();
const { history } = this.props;
if (history.location?.state?.fromMastodon) {

View file

@ -154,7 +154,7 @@
"compose_form.hashtag_warning": "Гэты допіс не будзе паказаны пад аніякім хэштэгам, бо ён не публічны. Толькі публічныя допісы можна знайсці па хэштэгу.",
"compose_form.lock_disclaimer": "Ваш уліковы запіс не {locked}. Усе могуць падпісацца на вас, каб бачыць допісы толькі для падпісчыкаў.",
"compose_form.lock_disclaimer.lock": "закрыты",
"compose_form.placeholder": "Што здарылася?",
"compose_form.placeholder": "Што ў вас новага?",
"compose_form.poll.duration": "Працягласць апытання",
"compose_form.poll.multiple": "Множны выбар",
"compose_form.poll.option_placeholder": "Варыянт {number}",

View file

@ -87,11 +87,29 @@
"alert.unexpected.title": "Wps!",
"alt_text_badge.title": "Testun Amgen",
"announcement.announcement": "Cyhoeddiad",
"annual_report.summary.archetype.booster": "Y hyrwyddwr",
"annual_report.summary.archetype.lurker": "Yr arsylwr",
"annual_report.summary.archetype.oracle": "Yr oracl",
"annual_report.summary.archetype.pollster": "Yr arholwr",
"annual_report.summary.archetype.replier": "Y sbardunwr",
"annual_report.summary.followers.followers": "dilynwyr",
"annual_report.summary.followers.total": "{count} cyfanswm",
"annual_report.summary.here_it_is": "Dyma eich {year} yn gryno:",
"annual_report.summary.highlighted_post.by_favourites": "postiad wedi'i ffefrynu fwyaf",
"annual_report.summary.highlighted_post.by_reblogs": "postiad wedi'i hybu fwyaf",
"annual_report.summary.highlighted_post.by_replies": "postiad gyda'r ymatebion mwyaf",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf",
"annual_report.summary.new_posts.new_posts": "postiadau newydd",
"annual_report.summary.percentile.text": "<topLabel>Rydych chi yn y </topLabel><percentage></percentage><bottomLabel>mwyaf o ddefnyddwyr Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni fyddwn yn dweud wrth Bernie.",
"annual_report.summary.thanks": "Diolch am fod yn rhan o Mastodon!",
"attachments_list.unprocessed": "(heb eu prosesu)",
"audio.hide": "Cuddio sain",
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystro mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
"block_modal.show_less": "Dangos llai",
"block_modal.show_more": "Dangos mwy",
"block_modal.show_more": "Dangos rhagor",
"block_modal.they_cant_mention": "Nid ydynt yn gallu eich crybwyll na'ch dilyn.",
"block_modal.they_cant_see_posts": "Nid ydynt yn gallu gweld eich postiadau ac ni fyddwch yn gweld eu rhai hwy.",
"block_modal.they_will_know": "Gallant weld eu bod wedi'u rhwystro.",
@ -163,9 +181,9 @@
"compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis",
"compose_form.poll.type": "Arddull",
"compose_form.publish": "Postiad",
"compose_form.publish_form": "Cyhoeddi",
"compose_form.publish_form": "Postiad newydd",
"compose_form.reply": "Ateb",
"compose_form.save_changes": "Diweddariad",
"compose_form.save_changes": "Diweddaru",
"compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
"compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
"compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "Adroddodd {name} {target}",
"notification.admin.sign_up": "Cofrestrodd {name}",
"notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}",
"notification.annual_report.message": "Mae eich #Wrapstodon {year} yn aros i chi! Gwelwch eich uchafbwyntiau ac amseroedd i'w cofio o'r flwyddyn hon ar Mastodon!",
"notification.annual_report.view": "Gweld #Wrapstodon",
"notification.favourite": "Ffafriodd {name} eich postiad",
"notification.favourite.name_and_others_with_link": "Ffafriodd {name} a <a>{count, plural, one {# arall} other {# arall}}</a> eich postiad",
"notification.follow": "Dilynodd {name} chi",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alt text",
"announcement.announcement": "Bekendtgørelse",
"annual_report.summary.archetype.booster": "Cool-hunter",
"annual_report.summary.archetype.lurker": "Lurker",
"annual_report.summary.archetype.oracle": "Oracle",
"annual_report.summary.archetype.pollster": "Pollster",
"annual_report.summary.archetype.replier": "Social butterfly",
"annual_report.summary.followers.followers": "følgere",
"annual_report.summary.followers.total": "{count} i alt",
"annual_report.summary.here_it_is": "Her er {year} i sammendrag:",
"annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerede indlæg",
"annual_report.summary.highlighted_post.by_reblogs": "mest boostede indlæg",
"annual_report.summary.highlighted_post.by_replies": "indlæg med flest svar",
"annual_report.summary.highlighted_post.possessive": "{name}s",
"annual_report.summary.most_used_app.most_used_app": "mest benyttede app",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag",
"annual_report.summary.new_posts.new_posts": "nye indlæg",
"annual_report.summary.percentile.text": "<topLabel>Det betyder, at man er i top</topLabel><percentage></percentage><bottomLabel>af Mastodon-brugere.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til Bernie.",
"annual_report.summary.thanks": "Tak for at være en del af Mastodon!",
"attachments_list.unprocessed": "(ubehandlet)",
"audio.hide": "Skjul lyd",
"block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.",
@ -158,6 +176,7 @@
"compose_form.poll.duration": "Afstemningens varighed",
"compose_form.poll.multiple": "Multivalg",
"compose_form.poll.option_placeholder": "Valgmulighed {number}",
"compose_form.poll.single": "Enkeltvalg",
"compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype",
"compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype",
"compose_form.poll.type": "Stil",
@ -507,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} anmeldte {target}",
"notification.admin.sign_up": "{name} tilmeldte sig",
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# anden} other {# andre}} tilmeldte sig",
"notification.annual_report.message": "{year} #Wrapstodon venter! Afslør årets højdepunkter og mindeværdige øjeblikke på Mastodon!",
"notification.annual_report.view": "Vis #Wrapstodon",
"notification.favourite": "{name} favoritmarkerede dit indlæg",
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# anden} other {# andre}}</a> gjorde dit indlæg til favorit",
"notification.follow": "{name} begyndte at følge dig",

View file

@ -525,15 +525,15 @@
"notification.admin.report_statuses": "{name} meldete {target} wegen {category}",
"notification.admin.report_statuses_other": "{name} meldete {target}",
"notification.admin.sign_up": "{name} registrierte sich",
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} registrierten sich",
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich",
"notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!",
"notification.annual_report.view": "#Wrapstodon ansehen",
"notification.favourite": "{name} favorisierte deinen Beitrag",
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> favorisierten deinen Beitrag",
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> favorisierten deinen Beitrag",
"notification.follow": "{name} folgt dir",
"notification.follow.name_and_others": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> folgen dir",
"notification.follow.name_and_others": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> folgen dir",
"notification.follow_request": "{name} möchte dir folgen",
"notification.follow_request.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} möchten dir folgen",
"notification.follow_request.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} möchten dir folgen",
"notification.label.mention": "Erwähnung",
"notification.label.private_mention": "Private Erwähnung",
"notification.label.private_reply": "Private Antwort",
@ -552,7 +552,7 @@
"notification.own_poll": "Deine Umfrage ist beendet",
"notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet",
"notification.reblog": "{name} teilte deinen Beitrag",
"notification.reblog.name_and_others_with_link": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> teilten deinen Beitrag",
"notification.reblog.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> teilten deinen Beitrag",
"notification.relationships_severance_event": "Verbindungen mit {name} verloren",
"notification.relationships_severance_event.account_suspension": "Ein Admin von {from} hat {target} gesperrt. Du wirst von diesem Profil keine Updates mehr erhalten und auch nicht mit ihm interagieren können.",
"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.",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ουπς!",
"alt_text_badge.title": "Εναλλακτικό κείμενο",
"announcement.announcement": "Ανακοίνωση",
"annual_report.summary.archetype.booster": "Ο κυνηγός των φοβερών",
"annual_report.summary.archetype.lurker": "Ο διακριτικός",
"annual_report.summary.archetype.oracle": "Η Πυθία",
"annual_report.summary.archetype.pollster": "Ο δημοσκόπος",
"annual_report.summary.archetype.replier": "Η κοινωνική πεταλούδα",
"annual_report.summary.followers.followers": "ακόλουθοι",
"annual_report.summary.followers.total": "{count} συνολικά",
"annual_report.summary.here_it_is": "Εδώ είναι το {year} σου σε ανασκόπηση:",
"annual_report.summary.highlighted_post.by_favourites": "πιο αγαπημένη ανάρτηση",
"annual_report.summary.highlighted_post.by_reblogs": "πιο ενισχυμένη ανάρτηση",
"annual_report.summary.highlighted_post.by_replies": "ανάρτηση με τις περισσότερες απαντήσεις",
"annual_report.summary.highlighted_post.possessive": "του χρήστη {name}",
"annual_report.summary.most_used_app.most_used_app": "πιο χρησιμοποιημένη εφαρμογή",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "πιο χρησιμοποιημένη ετικέτα",
"annual_report.summary.new_posts.new_posts": "νέες αναρτήσεις",
"annual_report.summary.percentile.text": "<topLabel>Αυτό σε βάζει στην κορυφή του </topLabel><percentage></percentage><bottomLabel>των χρηστών του Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Δεν θα το πούμε στον Bernie.",
"annual_report.summary.thanks": "Ευχαριστούμε που συμμετέχεις στο Mastodon!",
"attachments_list.unprocessed": "(μη επεξεργασμένο)",
"audio.hide": "Απόκρυψη αρχείου ήχου",
"block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.",
@ -158,6 +176,7 @@
"compose_form.poll.duration": "Διάρκεια δημοσκόπησης",
"compose_form.poll.multiple": "Πολλαπλή επιλογή",
"compose_form.poll.option_placeholder": "Επιλογή {number}",
"compose_form.poll.single": "Μονή επιλογή",
"compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές",
"compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή",
"compose_form.poll.type": "Στυλ",
@ -196,6 +215,7 @@
"confirmations.unfollow.title": "Άρση ακολούθησης;",
"content_warning.hide": "Απόκρυψη ανάρτησης",
"content_warning.show": "Εμφάνιση ούτως ή άλλως",
"content_warning.show_more": "Εμφάνιση περισσότερων",
"conversation.delete": "Διαγραφή συζήτησης",
"conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
"conversation.open": "Προβολή συνομιλίας",
@ -304,6 +324,7 @@
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
"filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης",
"filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης",
"filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “<span>{title}</span>”",
"filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις",
"filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις",
"firehose.all": "Όλα",
@ -383,9 +404,10 @@
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.",
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.",
"interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.",
"interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα",
"interaction_modal.description.vote": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σ' αυτή την ανάρτηση.",
"interaction_modal.login.action": "Πήγαινέ με στην αρχική σελίδα",
"interaction_modal.login.prompt": "Τομέας του οικιακού σου διακομιστή, πχ. mastodon.social",
"interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;",
"interaction_modal.no_account_yet": "Δεν είστε στο Mastodon;",
"interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή",
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
"interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;",
@ -394,6 +416,7 @@
"interaction_modal.title.follow": "Ακολούθησε {name}",
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
"interaction_modal.title.vote": "Ψήφισε στη δημοσκόπηση του χρήστη {name}",
"intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
"intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
@ -503,9 +526,12 @@
"notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}",
"notification.admin.sign_up": "{name} έχει εγγραφεί",
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί",
"notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!",
"notification.annual_report.view": "Προβολή #Wrapstodon",
"notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου",
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε",
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> σε ακολούθησαν",
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
"notification.label.mention": "Επισήμανση",
@ -513,6 +539,7 @@
"notification.label.private_reply": "Ιδιωτική απάντηση",
"notification.label.reply": "Απάντηση",
"notification.mention": "Επισήμανση",
"notification.mentioned_you": "Ο χρήστης {name} σε επισήμανε",
"notification.moderation-warning.learn_more": "Μάθε περισσότερα",
"notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού",
"notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.",
@ -563,6 +590,7 @@
"notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου",
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
"notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:",
"notifications.column_settings.group": "Ομάδα",
"notifications.column_settings.mention": "Επισημάνσεις:",
"notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:",
"notifications.column_settings.push": "Ειδοποιήσεις Push",

View file

@ -114,6 +114,7 @@
"annual_report.summary.highlighted_post.possessive": "{name}'s",
"annual_report.summary.most_used_app.most_used_app": "most used app",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag",
"annual_report.summary.most_used_hashtag.none": "None",
"annual_report.summary.new_posts.new_posts": "new posts",
"annual_report.summary.percentile.text": "<topLabel>That puts you in the top</topLabel><percentage></percentage><bottomLabel>of Mastodon users.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",

View file

@ -87,6 +87,9 @@
"alert.unexpected.title": "Aj!",
"alt_text_badge.title": "Alt-teksto",
"announcement.announcement": "Anonco",
"annual_report.summary.archetype.replier": "La plej societema",
"annual_report.summary.followers.followers": "sekvantoj",
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
"attachments_list.unprocessed": "(neprilaborita)",
@ -510,6 +513,7 @@
"notification.admin.report_statuses_other": "{name} raportis {target}",
"notification.admin.sign_up": "{name} kreis konton",
"notification.admin.sign_up.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} kreis konton",
"notification.annual_report.view": "Vidu #Wrapstodon",
"notification.favourite": "{name} stelumis vian afiŝon",
"notification.favourite.name_and_others_with_link": "{name} kaj <a>{count, plural, one {# alia} other {# aliaj}}</a> ŝatis vian afiŝon",
"notification.follow": "{name} eksekvis vin",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Epa!",
"alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "Corrió la voz",
"annual_report.summary.archetype.lurker": "El acechador",
"annual_report.summary.archetype.oracle": "El oráculo",
"annual_report.summary.archetype.pollster": "Estuvo consultando",
"annual_report.summary.archetype.replier": "Respondió un montón",
"annual_report.summary.followers.followers": "seguidores",
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
"annual_report.summary.highlighted_post.possessive": "de {name}",
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
"annual_report.summary.followers.total": "{count} en total",
"annual_report.summary.here_it_is": "Acá está tu resumen de {year}:",
"annual_report.summary.highlighted_post.by_favourites": "el mensaje más veces marcado como favorito",
"annual_report.summary.highlighted_post.by_reblogs": "el mensaje que más adhesiones recibió",
"annual_report.summary.highlighted_post.by_replies": "el mensaje que más respuestas recibió",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "la aplicación más usada",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevos mensajes",
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en la cima</topLabel><percentage></percentage><bottomLabel>de los usuarios de Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "[sin procesar]",
"audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} denunció a {target}",
"notification.admin.sign_up": "Se registró {name}",
"notification.admin.sign_up.name_and_others": "Se registraron {name} y {count, plural, one {# cuenta más} other {# cuentas más}}",
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
"notification.annual_report.view": "Ver #Wrapstodon",
"notification.favourite": "{name} marcó tu mensaje como favorito",
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# cuenta más} other {# cuentas más}}</a> marcaron tu mensaje como favorito",
"notification.follow": "{name} te empezó a seguir",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "El cazador de tendencias",
"annual_report.summary.archetype.lurker": "El acechador",
"annual_report.summary.archetype.oracle": "El oráculo",
"annual_report.summary.archetype.pollster": "El encuestador",
"annual_report.summary.archetype.replier": "El más sociable",
"annual_report.summary.followers.followers": "seguidores",
"annual_report.summary.followers.total": "{count} en total",
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
"annual_report.summary.highlighted_post.possessive": "de {name}",
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} reportó {target}",
"notification.admin.sign_up": "{name} se unio",
"notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} se registraron",
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
"notification.annual_report.view": "Ver #Wrapstodon",
"notification.favourite": "{name} marcó como favorita tu publicación",
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# otro} other {# otros}}</a> marcaron tu publicación como favorita",
"notification.follow": "{name} te empezó a seguir",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "El cazador de tendencias",
"annual_report.summary.archetype.lurker": "El acechador",
"annual_report.summary.archetype.oracle": "El oráculo",
"annual_report.summary.archetype.pollster": "El encuestador",
"annual_report.summary.archetype.replier": "El más sociable",
"annual_report.summary.followers.followers": "seguidores",
"annual_report.summary.followers.total": "{count} en total",
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
"annual_report.summary.highlighted_post.possessive": "de {name}",
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} informó de {target}",
"notification.admin.sign_up": "{name} se registró",
"notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# más} other {# más}} se registraron",
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
"notification.annual_report.view": "Ver #Wrapstodon",
"notification.favourite": "{name} marcó como favorita tu publicación",
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# más} other {# más}}</a> marcaron tu publicación como favorita",
"notification.follow": "{name} te empezó a seguir",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Annar tekstur",
"announcement.announcement": "Kunngerð",
"annual_report.summary.archetype.booster": "Kuli jagarin",
"annual_report.summary.archetype.lurker": "Lúrarin",
"annual_report.summary.archetype.oracle": "Oraklið",
"annual_report.summary.archetype.pollster": "Spyrjarin",
"annual_report.summary.archetype.replier": "Sosiali firvaldurin",
"annual_report.summary.followers.followers": "fylgjarar",
"annual_report.summary.followers.total": "{count} íalt",
"annual_report.summary.here_it_is": "Her er ein samandráttur av {year}:",
"annual_report.summary.highlighted_post.by_favourites": "mest dámdi postur",
"annual_report.summary.highlighted_post.by_reblogs": "oftast lyfti postur",
"annual_report.summary.highlighted_post.by_replies": "postur við flestum svarum",
"annual_report.summary.highlighted_post.possessive": "hjá {name}",
"annual_report.summary.most_used_app.most_used_app": "mest brúkta app",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki",
"annual_report.summary.new_posts.new_posts": "nýggir postar",
"annual_report.summary.percentile.text": "<topLabel>Tað fær teg í topp</topLabel><percentage></percentage><bottomLabel>av Mastodon brúkarum.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.",
"annual_report.summary.thanks": "Takk fyri at tú er partur av Mastodon!",
"attachments_list.unprocessed": "(óviðgjørt)",
"audio.hide": "Fjal ljóð",
"block_modal.remote_users_caveat": "Vit biðja ambætaran {domain} virða tína avgerð. Kortini er eingin vissa um samsvar, av tí at fleiri ambætarar handfara blokkar ymiskt. Almennir postar kunnu framvegis vera sjónligir fyri brúkarar, sum ikki eru innritaðir.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} meldaði {target}",
"notification.admin.sign_up": "{name} meldaði seg til",
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} teknaðu seg",
"notification.annual_report.message": "Títt {year} #Wrapstodon bíðar! Avdúka hæddarpunktini og minniligu løturnar á Mastodon!",
"notification.annual_report.view": "Sí #Wrapstodon",
"notification.favourite": "{name} dámdi postin hjá tær",
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# annar/onnur} other {# onnur}}</a> yndisfrámerktu postin hjá tær",
"notification.follow": "{name} fylgdi tær",

View file

@ -97,6 +97,8 @@
"annual_report.summary.most_used_app.most_used_app": "app que mais usaches",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado",
"annual_report.summary.new_posts.new_posts": "novas publicacións",
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de Mastodon.</bottomLabel>",
"annual_report.summary.thanks": "Grazas por ser parte de Mastodon!",
"attachments_list.unprocessed": "(sen procesar)",
"audio.hide": "Agochar audio",
"block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "אופס!",
"alt_text_badge.title": "כיתוב חלופי",
"announcement.announcement": "הכרזה",
"annual_report.summary.archetype.booster": "ההד-וניסט(ית)",
"annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה",
"annual_report.summary.archetype.oracle": "כבוד הרב.ה",
"annual_report.summary.archetype.pollster": "הסקרן.ית",
"annual_report.summary.archetype.replier": "הפרפר.ית החברתי.ת",
"annual_report.summary.followers.followers": "עוקבים",
"annual_report.summary.followers.total": "{count} בסך הכל",
"annual_report.summary.here_it_is": "והנה סיכום {year} שלך:",
"annual_report.summary.highlighted_post.by_favourites": "התות הכי מחובב",
"annual_report.summary.highlighted_post.by_reblogs": "התות הכי מהודהד",
"annual_report.summary.highlighted_post.by_replies": "התות עם מספר התשובות הגבוה ביותר",
"annual_report.summary.highlighted_post.possessive": "של {name}",
"annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר",
"annual_report.summary.new_posts.new_posts": "הודעות חדשות",
"annual_report.summary.percentile.text": "<topLabel>ממקם אותך באחוזון </topLabel><percentage></percentage><bottomLabel>של משמשי מסטודון.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.",
"annual_report.summary.thanks": "תודה על היותך חלק ממסטודון!",
"attachments_list.unprocessed": "(לא מעובד)",
"audio.hide": "השתק",
"block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} דיווח.ה על {target}",
"notification.admin.sign_up": "{name} נרשמו",
"notification.admin.sign_up.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} נרשמו",
"notification.annual_report.message": "ה- #סיכומודון שלך לשנת {year} מחכה! גלו את רגעי השיא והזכרונות ממסטודון!",
"notification.annual_report.view": "לצפייה ב- #סיכומודון",
"notification.favourite": "הודעתך חובבה על ידי {name}",
"notification.favourite.name_and_others_with_link": "{name} ועוד <a>{count, plural,one {אחד נוסף}other {# נוספים}}</a> חיבבו את הודעתך",
"notification.follow": "{name} במעקב אחרייך",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Hoppá!",
"alt_text_badge.title": "Helyettesítő szöveg",
"announcement.announcement": "Közlemény",
"annual_report.summary.archetype.booster": "A cool-vadász",
"annual_report.summary.archetype.lurker": "A settenkedő",
"annual_report.summary.archetype.oracle": "Az orákulum",
"annual_report.summary.archetype.pollster": "A közvélemény-kutató",
"annual_report.summary.archetype.replier": "A társasági pillangó",
"annual_report.summary.followers.followers": "követő",
"annual_report.summary.followers.total": "{count} összesen",
"annual_report.summary.here_it_is": "Itt a {year}. év értékelése:",
"annual_report.summary.highlighted_post.by_favourites": "legkedvencebb bejegyzés",
"annual_report.summary.highlighted_post.by_reblogs": "legtöbbet megtolt bejegyzés",
"annual_report.summary.highlighted_post.by_replies": "bejegyzés a legtöbb válasszal",
"annual_report.summary.highlighted_post.possessive": "{name} fióktól",
"annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag",
"annual_report.summary.new_posts.new_posts": "új bejegyzés",
"annual_report.summary.percentile.text": "<topLabel>Ezzel a</topLabel><percentage></percentage><bottomLabel>csúcs Mastodon felhasználó között vagy.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.",
"annual_report.summary.thanks": "Kösz, hogy a Mastodon része vagy!",
"attachments_list.unprocessed": "(feldolgozatlan)",
"audio.hide": "Hang elrejtése",
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} jelentette: {target}",
"notification.admin.sign_up": "{name} regisztrált",
"notification.admin.sign_up.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} regisztrált",
"notification.annual_report.message": "Vár a {year}. év #Wrapstodon jelentése! Fedd fel az éved jelentős eseményeit és emlékezetes pillanatait a Mastodonon!",
"notification.annual_report.view": "#Wrapstodon Megtekintése",
"notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet",
"notification.favourite.name_and_others_with_link": "{name} és <a>{count, plural, one {# másik} other {# másik}}</a> kedvencnek jelölte a bejegyzésedet",
"notification.follow": "{name} követ téged",

View file

@ -87,6 +87,20 @@
"alert.unexpected.title": "Oops!",
"alt_text_badge.title": "Testo alternativo",
"announcement.announcement": "Annuncio",
"annual_report.summary.archetype.oracle": "L'oracolo",
"annual_report.summary.followers.followers": "seguaci",
"annual_report.summary.followers.total": "{count} in totale",
"annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:",
"annual_report.summary.highlighted_post.by_favourites": "il post più apprezzato",
"annual_report.summary.highlighted_post.by_reblogs": "il post più condiviso",
"annual_report.summary.highlighted_post.by_replies": "il post con più risposte",
"annual_report.summary.highlighted_post.possessive": "di {name}",
"annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato",
"annual_report.summary.new_posts.new_posts": "nuovi post",
"annual_report.summary.percentile.text": "<topLabel>Questo ti colloca tra il</topLabel><percentage></percentage><bottomLabel>dei migliori utenti Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.",
"annual_report.summary.thanks": "Grazie per far parte di Mastodon!",
"attachments_list.unprocessed": "(non elaborato)",
"audio.hide": "Nascondi audio",
"block_modal.remote_users_caveat": "Chiederemo al server {domain} di rispettare la tua decisione. Tuttavia, la conformità non è garantita poiché alcuni server potrebbero gestire i blocchi in modo diverso. I post pubblici potrebbero essere ancora visibili agli utenti che non hanno effettuato l'accesso.",
@ -508,6 +522,8 @@
"notification.admin.report_statuses_other": "{name} ha segnalato {target}",
"notification.admin.sign_up": "{name} si è iscritto",
"notification.admin.sign_up.name_and_others": "Si sono iscritti: {name} e {count, plural, one {# altro utente} other {altri # utenti}}",
"notification.annual_report.message": "Il tuo #Wrapstodon {year} ti aspetta! Scopri i momenti salienti e memorabili del tuo anno su Mastodon!",
"notification.annual_report.view": "Visualizza #Wrapstodon",
"notification.favourite": "{name} ha aggiunto il tuo post ai preferiti",
"notification.favourite.name_and_others_with_link": "{name} e <a>{count, plural, one {# altro} other {altri #}}</a> hanno aggiunto il tuo post ai preferiti",
"notification.follow": "{name} ha iniziato a seguirti",

View file

@ -99,6 +99,24 @@
"alert.unexpected.title": "エラー!",
"alt_text_badge.title": "代替テキスト",
"announcement.announcement": "お知らせ",
"annual_report.summary.archetype.booster": "トレンドハンター",
"annual_report.summary.archetype.lurker": "ROM専",
"annual_report.summary.archetype.oracle": "予言者",
"annual_report.summary.archetype.pollster": "調査員",
"annual_report.summary.archetype.replier": "社交家",
"annual_report.summary.followers.followers": "フォロワー",
"annual_report.summary.followers.total": "合計{count}",
"annual_report.summary.here_it_is": "こちらがあなたの{year}年の振り返りです",
"annual_report.summary.highlighted_post.by_favourites": "最もお気に入りされた投稿",
"annual_report.summary.highlighted_post.by_reblogs": "最もブーストされた投稿",
"annual_report.summary.highlighted_post.by_replies": "最も返信が多かった投稿",
"annual_report.summary.highlighted_post.possessive": "{name}の",
"annual_report.summary.most_used_app.most_used_app": "最も使用されているアプリ",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最も使用されたハッシュタグ",
"annual_report.summary.new_posts.new_posts": "新しい投稿",
"annual_report.summary.percentile.text": "<topLabel>それにより、あなたは上位に位置しています。</topLabel><percentage></percentage><bottomLabel>Mastodonユーザーの中で。</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "バー二ーには秘密にしておくよ。",
"annual_report.summary.thanks": "Mastodonの一員になってくれてありがとう",
"antennas.account.add": "アンテナに追加",
"antennas.account.remove": "アンテナから外す",
"antennas.accounts": "{count} のアカウント",
@ -612,6 +630,8 @@
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
"notification.admin.sign_up": "{name}さんがサインアップしました",
"notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました",
"notification.annual_report.message": "「あなたの{year}年の#Wrapstodonが待っていますMastodonであなたの年のハイライトや思い出の瞬間を公開しましょう」と訳せます。",
"notification.annual_report.view": "#Wrapstodon を表示",
"notification.emoji_reaction": "{name}さんがあなたの投稿に絵文字をつけました",
"notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました",
"notification.favourite": "{name}さんがお気に入りしました",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "앗!",
"alt_text_badge.title": "대체 문구",
"announcement.announcement": "공지사항",
"annual_report.summary.archetype.booster": "연쇄부스트마",
"annual_report.summary.archetype.lurker": "은둔자",
"annual_report.summary.archetype.oracle": "예언자",
"annual_report.summary.archetype.pollster": "여론조사원",
"annual_report.summary.archetype.replier": "인싸",
"annual_report.summary.followers.followers": "팔로워",
"annual_report.summary.followers.total": "총 {count}",
"annual_report.summary.here_it_is": "{year}년 결산입니다:",
"annual_report.summary.highlighted_post.by_favourites": "가장 많은 좋아요를 받은 게시물",
"annual_report.summary.highlighted_post.by_reblogs": "가장 많이 부스트된 게시물",
"annual_report.summary.highlighted_post.by_replies": "가장 많은 답글을 받은 게시물",
"annual_report.summary.highlighted_post.possessive": "{name} 님의",
"annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그",
"annual_report.summary.new_posts.new_posts": "새 게시물",
"annual_report.summary.percentile.text": "<topLabel>마스토돈 사용자의 상위</topLabel><percentage></percentage><bottomLabel>입니다.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "엄마한테 말 안 할게요.",
"annual_report.summary.thanks": "마스토돈과 함께 해주셔서 감사합니다!",
"attachments_list.unprocessed": "(처리 안 됨)",
"audio.hide": "소리 숨기기",
"block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다",
"notification.admin.sign_up": "{name} 님이 가입했습니다",
"notification.admin.sign_up.name_and_others": "{name} 외 {count, plural, other {# 명}}이 가입했습니다",
"notification.annual_report.message": "{year} #Wrapstodon 이 기다리고 있습니다! 올 해 마스토돈에서 있었던 최고의 순간과 기억들을 열어보세요!",
"notification.annual_report.view": "#Wrapstodon 보기",
"notification.favourite": "{name} 님이 내 게시물을 좋아합니다",
"notification.favourite.name_and_others_with_link": "{name} 외 <a>{count, plural, other {# 명}}</a>이 내 게시물을 좋아합니다",
"notification.follow": "{name} 님이 나를 팔로우했습니다",

View file

@ -85,7 +85,11 @@
"alert.rate_limited.title": "Limite de tentativas",
"alert.unexpected.message": "Ocorreu um erro inesperado.",
"alert.unexpected.title": "Bolas!",
"alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anúncio",
"annual_report.summary.followers.total": "{count} total",
"annual_report.summary.here_it_is": "Aqui está o seu {year} em revisão:",
"annual_report.summary.new_posts.new_posts": "novas publicações",
"attachments_list.unprocessed": "(não processado)",
"audio.hide": "Ocultar áudio",
"block_modal.remote_users_caveat": "Vamos pedir ao servidor {domain} para respeitar a sua decisão. No entanto, não é garantido o seu cumprimento, uma vez que alguns servidores podem tratar os bloqueios de forma diferente. As mensagens públicas podem continuar a ser visíveis para utilizadores não autenticados.",

View file

@ -40,7 +40,7 @@
"account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
"account.go_to_profile": "Перейти к профилю",
"account.hide_reblogs": "Скрыть продвижения от @{name}",
"account.in_memoriam": "В Памяти.",
"account.in_memoriam": "Вечная память.",
"account.joined_short": "Присоединился",
"account.languages": "Изменить языки подписки",
"account.link_verified_on": "Владение этой ссылкой было проверено {date}",
@ -62,13 +62,13 @@
"account.requested_follow": "{name} отправил(а) вам запрос на подписку",
"account.share": "Поделиться профилем @{name}",
"account.show_reblogs": "Показывать продвижения от @{name}",
"account.statuses_counter": "{count, plural, one {# пост} few {# поста} many {# постов} other {# постов}}",
"account.statuses_counter": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}",
"account.unblock": "Разблокировать @{name}",
"account.unblock_domain": "Разблокировать {domain}",
"account.unblock_short": "Разблокировать",
"account.unendorse": "Не рекомендовать в профиле",
"account.unfollow": "Отписаться",
"account.unmute": "Убрать {name} из игнорируемых",
"account.unmute": "Перестать игнорировать @{name}",
"account.unmute_notifications_short": "Включить уведомления",
"account.unmute_short": "Не игнорировать",
"account_note.placeholder": "Текст заметки",
@ -87,6 +87,20 @@
"alert.unexpected.title": "Ой!",
"alt_text_badge.title": "Альтернативный текст",
"announcement.announcement": "Объявление",
"annual_report.summary.archetype.booster": "Репостер",
"annual_report.summary.archetype.lurker": "Молчун",
"annual_report.summary.archetype.pollster": "Опросчик",
"annual_report.summary.archetype.replier": "Душа компании",
"annual_report.summary.followers.followers": "подписчиков",
"annual_report.summary.here_it_is": "Вот ваши итоги {year} года:",
"annual_report.summary.highlighted_post.by_favourites": "пост с наибольшим количеством звёздочек",
"annual_report.summary.highlighted_post.by_reblogs": "пост с наибольшим количеством продвижений",
"annual_report.summary.highlighted_post.by_replies": "пост с наибольшим количеством ответов",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хэштег",
"annual_report.summary.new_posts.new_posts": "новых постов",
"annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!",
"attachments_list.unprocessed": "(не обработан)",
"audio.hide": "Скрыть аудио",
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение. Однако, соблюдение требований не гарантировано, поскольку некоторые серверы могут работать с блокировками по-разному. Публичные записи по-прежнему могут быть видны неавторизованным пользователям.",
@ -146,10 +160,10 @@
"community.column_settings.remote_only": "Только удалённые",
"compose.language.change": "Сменить язык",
"compose.language.search": "Поиск языков...",
"compose.published.body": "Запись опубликована.",
"compose.published.body": "Пост опубликован.",
"compose.published.open": "Открыть",
"compose.saved.body": "Запись сохранена.",
"compose_form.direct_message_warning_learn_more": "Подробнее",
"compose.saved.body": "Пост отредактирован.",
"compose_form.direct_message_warning_learn_more": "Узнать больше",
"compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.",
"compose_form.hashtag_warning": "Этот пост не будет виден ни под одним из хэштегов, так как он не публичный. Только публичные посты можно найти по хэштегу.",
"compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.",
@ -161,14 +175,14 @@
"compose_form.poll.single": "Один вариант ответа",
"compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов",
"compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа",
"compose_form.poll.type": "Стиль",
"compose_form.poll.type": "Тип",
"compose_form.publish": "Опубликовать",
"compose_form.publish_form": "Опубликовать",
"compose_form.reply": "Ответить",
"compose_form.save_changes": "Сохранить",
"compose_form.spoiler.marked": "Текст скрыт за предупреждением",
"compose_form.spoiler.unmarked": "Текст не скрыт",
"compose_form.spoiler_placeholder": "Предупреждение о контенте (опционально)",
"compose_form.spoiler_placeholder": "Предупреждение о содержимом (необязательно)",
"confirmation_modal.cancel": "Отмена",
"confirmations.block.confirm": "Заблокировать",
"confirmations.delete.confirm": "Удалить",
@ -178,17 +192,17 @@
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
"confirmations.delete_list.title": "Удалить список?",
"confirmations.discard_edit_media.confirm": "Отменить",
"confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?",
"confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?",
"confirmations.edit.confirm": "Редактировать",
"confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?",
"confirmations.edit.title": "Перепишем сообщение?",
"confirmations.edit.message": "При редактировании, текст набираемого поста будет очищен. Продолжить?",
"confirmations.edit.title": "Переписать сообщение?",
"confirmations.logout.confirm": "Выйти",
"confirmations.logout.message": "Вы уверены, что хотите выйти?",
"confirmations.logout.title": "Выйти?",
"confirmations.mute.confirm": "Игнорировать",
"confirmations.redraft.confirm": "Удалить и исправить",
"confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут удалены.",
"confirmations.redraft.title": "Удалим и исправим пост?",
"confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут потеряны.",
"confirmations.redraft.title": "Создать пост заново?",
"confirmations.reply.confirm": "Ответить",
"confirmations.reply.message": "При ответе, текст набираемого поста будет очищен. Продолжить?",
"confirmations.reply.title": "Перепишем пост?",
@ -243,7 +257,7 @@
"embed.preview": "Так это будет выглядеть:",
"emoji_button.activity": "Занятия",
"emoji_button.clear": "Очистить",
"emoji_button.custom": "С этого узла",
"emoji_button.custom": "С этого сервера",
"emoji_button.flags": "Флаги",
"emoji_button.food": "Еда и напитки",
"emoji_button.label": "Вставить эмодзи",
@ -350,12 +364,12 @@
"hashtag.column_settings.tag_mode.any": "Любой из списка",
"hashtag.column_settings.tag_mode.none": "Ни один из списка",
"hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} участник} few {{counter} участников} many {{counter} участников} other {{counter} участников}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} сообщение} few {{counter} сообщения} many {{counter} сообщения} other {{counter} сообщения}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} сообщение} other {{counter} сообщений}} сегодня",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} пользователь} few {{counter} пользователя} other {{counter} пользователей}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}} сегодня",
"hashtag.follow": "Подписаться на новые посты",
"hashtag.unfollow": "Отписаться",
"hashtags.and_other": "...и {count, plural, other {# ещё}}",
"hashtags.and_other": "…и {count, plural, other {ещё #}}",
"hints.profiles.followers_may_be_missing": "Подписчики у этого профиля могут отсутствовать.",
"hints.profiles.follows_may_be_missing": "Фолловеры для этого профиля могут отсутствовать.",
"hints.profiles.posts_may_be_missing": "Некоторые сообщения из этого профиля могут отсутствовать.",
@ -404,15 +418,15 @@
"intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}",
"keyboard_shortcuts.back": "перейти назад",
"keyboard_shortcuts.blocked": "чтобы открыть список заблокированных",
"keyboard_shortcuts.boost": "Репостнуть",
"keyboard_shortcuts.boost": "продвинуть пост",
"keyboard_shortcuts.column": "фокус на одном из столбцов",
"keyboard_shortcuts.compose": "фокус на поле ввода",
"keyboard_shortcuts.description": "Описание",
"keyboard_shortcuts.direct": "чтобы открыть столбец личных упоминаний",
"keyboard_shortcuts.down": "вниз по списку",
"keyboard_shortcuts.enter": "открыть пост",
"keyboard_shortcuts.favourite": "Добавить пост в избранное",
"keyboard_shortcuts.favourites": "Открыть «Избранное»",
"keyboard_shortcuts.favourite": "добавить пост в избранное",
"keyboard_shortcuts.favourites": "открыть «Избранные»",
"keyboard_shortcuts.federated": "перейти к глобальной ленте",
"keyboard_shortcuts.heading": "Сочетания клавиш",
"keyboard_shortcuts.home": "перейти к домашней ленте",
@ -420,7 +434,7 @@
"keyboard_shortcuts.legend": "показать это окно",
"keyboard_shortcuts.local": "перейти к локальной ленте",
"keyboard_shortcuts.mention": "упомянуть автора поста",
"keyboard_shortcuts.muted": "Открыть список игнорируемых",
"keyboard_shortcuts.muted": "открыть список игнорируемых",
"keyboard_shortcuts.my_profile": "перейти к своему профилю",
"keyboard_shortcuts.notifications": "перейти к уведомлениям",
"keyboard_shortcuts.open_media": "открыть вложение",
@ -432,7 +446,7 @@
"keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании",
"keyboard_shortcuts.start": "Перейти к разделу \"Начать\"",
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
"keyboard_shortcuts.toggle_sensitivity": "Показать/скрыть медиафайлы",
"keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы",
"keyboard_shortcuts.toot": "начать писать новый пост",
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
"keyboard_shortcuts.up": "вверх по списку",
@ -470,12 +484,12 @@
"mute_modal.show_options": "Показать опции",
"mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.",
"mute_modal.they_wont_know": "Они не будут знать, что их заглушили.",
"mute_modal.title": "Заткнуть пользователя?",
"mute_modal.title": "Заглушить пользователя?",
"mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.",
"mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.",
"navigation_bar.about": "О проекте",
"navigation_bar.administration": "Администрация",
"navigation_bar.advanced_interface": "Включить многоколоночный интерфейс",
"navigation_bar.administration": "Администрирование",
"navigation_bar.advanced_interface": "Открыть в многоколоночном интерфейсе",
"navigation_bar.blocks": "Заблокированные пользователи",
"navigation_bar.bookmarks": "Закладки",
"navigation_bar.community_timeline": "Локальная лента",
@ -501,27 +515,29 @@
"navigation_bar.search": "Поиск",
"navigation_bar.security": "Безопасность",
"not_signed_in_indicator.not_signed_in": "Вам нужно войти, чтобы иметь доступ к этому ресурсу.",
"notification.admin.report": "{name} сообщил о {target}",
"notification.admin.report_account": "{name} сообщил {count, plural, one {один пост} other {# постов}} от {target} для {category}",
"notification.admin.report_account_other": "{name} сообщил {count, plural, one {одно сообщение} other {# сообщений}} от {target}",
"notification.admin.report_statuses": "{name} сообщил {target} для {category}",
"notification.admin.report_statuses_other": "{name} сообщает {target}",
"notification.admin.sign_up": "{name} зарегистрирован",
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались",
"notification.admin.report": "{name} пожаловался на {target}",
"notification.admin.report_account": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target} по причине: {category}",
"notification.admin.report_account_other": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target}",
"notification.admin.report_statuses": "{name} пожаловался на {target} по причине: {category}",
"notification.admin.report_statuses_other": "{name} пожаловался на {target}",
"notification.admin.sign_up": "{name} зарегистрировался",
"notification.admin.sign_up.name_and_others": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} зарегистрировались",
"notification.annual_report.message": "#Wrapstodon за {year} год ждёт вас! Откройте для себя итоги и памятные моменты этого года в Mastodon!",
"notification.annual_report.view": "Перейти к #Wrapstodon",
"notification.favourite": "{name} добавил(а) ваш пост в избранное",
"notification.favourite.name_and_others_with_link": "{name} и ещё <a>{count, plural, one {# пользователь} few {# пользователя} other {# пользователей}}</a> добавили ваш пост в избранное",
"notification.follow": "{name} подписался (-лась) на вас",
"notification.follow.name_and_others": "{name} и <a>{count, plural, one {# other} few {# others} many {# others} other {# others}}</a> подписались на вас",
"notification.follow.name_and_others": "{name} и ещё <a>{count, plural, one {# пользователь} few {# пользователя} other {# пользователей}}</a> подписались на вас",
"notification.follow_request": "{name} отправил запрос на подписку",
"notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас",
"notification.label.mention": "Упоминание",
"notification.label.private_mention": "Частное упоминание",
"notification.label.private_reply": "Частный ответ",
"notification.label.reply": "Ответить",
"notification.label.private_mention": "Личное упоминание",
"notification.label.private_reply": "Приватный ответ",
"notification.label.reply": "Ответ",
"notification.mention": "Упоминание",
"notification.mentioned_you": "{name} упоминает вас",
"notification.mentioned_you": "{name} упомянул(а) вас",
"notification.moderation-warning.learn_more": "Узнать больше",
"notification.moderation_warning": "Вы получили предупреждение от модерации",
"notification.moderation_warning": "Модераторы вынесли вам предупреждение",
"notification.moderation_warning.action_delete_statuses": "Некоторые из ваших публикаций были удалены.",
"notification.moderation_warning.action_disable": "Ваша учётная запись была отключена.",
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некоторые из ваших сообщений были отмечены как деликатные.",
@ -561,16 +577,16 @@
"notification_requests.view": "Просмотр уведомлений",
"notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
"notifications.clear_title": "Сбросить уведомления?",
"notifications.clear_title": "Очистить уведомления?",
"notifications.column_settings.admin.report": "Новые жалобы:",
"notifications.column_settings.admin.sign_up": "Новые регистрации:",
"notifications.column_settings.alert": "Уведомления на рабочем столе",
"notifications.column_settings.favourite": "Избранные:",
"notifications.column_settings.filter_bar.advanced": "Отображать все категории",
"notifications.column_settings.favourite": "Ваш пост добавили в избранные:",
"notifications.column_settings.filter_bar.advanced": "Показать все категории",
"notifications.column_settings.filter_bar.category": "Панель сортировки",
"notifications.column_settings.follow": "У вас новый подписчик:",
"notifications.column_settings.follow_request": "Новые запросы на подписку:",
"notifications.column_settings.group": "Группа",
"notifications.column_settings.group": "Группировать",
"notifications.column_settings.mention": "Вас упомянули в посте:",
"notifications.column_settings.poll": "Опрос, в котором вы приняли участие, завершился:",
"notifications.column_settings.push": "Пуш-уведомления",
@ -590,27 +606,27 @@
"notifications.filter.statuses": "Обновления от людей, на которых вы подписаны",
"notifications.grant_permission": "Предоставить разрешение.",
"notifications.group": "{count} уведомл.",
"notifications.mark_as_read": "Отмечать все уведомления прочитанными",
"notifications.mark_as_read": "Отметить все уведомления прочитанными",
"notifications.permission_denied": "Уведомления на рабочем столе недоступны, так как вы запретили их отправку в браузере. Проверьте настройки для сайта, чтобы включить их обратно.",
"notifications.permission_denied_alert": "Уведомления на рабочем столе недоступны, так как вы ранее отклонили запрос на их отправку.",
"notifications.permission_required": "Чтобы включить уведомления на рабочем столе, необходимо разрешить их в браузере.",
"notifications.policy.accept": "Принять",
"notifications.policy.accept_hint": "Показать в уведомлениях",
"notifications.policy.drop": "Игнорируем",
"notifications.policy.drop_hint": "Отправить в пустоту, чтобы никогда больше не увидеть",
"notifications.policy.filter": "Фильтр",
"notifications.policy.filter_hint": "Отправка в папку фильтрованных уведомлений",
"notifications.policy.filter_limited_accounts_hint": "Ограничено модераторами сервера",
"notifications.policy.filter_limited_accounts_title": "Модерируемые аккаунты",
"notifications.policy.filter_new_accounts.hint": "Создано в течение последних {days, plural, one {один день} few {# дней} many {# дней} other {# дня}}",
"notifications.policy.accept": "Принимать",
"notifications.policy.accept_hint": "Показывать в уведомлениях",
"notifications.policy.drop": "Игнорировать",
"notifications.policy.drop_hint": "Отправлять в пустоту, чтобы никогда больше не увидеть",
"notifications.policy.filter": "Фильтровать",
"notifications.policy.filter_hint": "Отправлять в раздел отфильтрованных уведомлений",
"notifications.policy.filter_limited_accounts_hint": "Ограниченные модераторами сервера",
"notifications.policy.filter_limited_accounts_title": "Модерируемые учётные записи",
"notifications.policy.filter_new_accounts.hint": "Созданные в течение {days, plural, one {последнего # дня} other {последних # дней}}",
"notifications.policy.filter_new_accounts_title": "Новые учётные записи",
"notifications.policy.filter_not_followers_hint": "Включая людей, которые подписаны на вас меньше чем {days, plural, one {# день} few {# дня} other {# дней}}",
"notifications.policy.filter_not_followers_title": "Люди, не подписанные на вас",
"notifications.policy.filter_not_following_hint": "Пока вы не одобрите их вручную",
"notifications.policy.filter_not_following_title": "Люди, на которых вы не подписаны",
"notifications.policy.filter_private_mentions_hint": "Фильтруется, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя",
"notifications.policy.filter_private_mentions_hint": "Фильтруются, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя",
"notifications.policy.filter_private_mentions_title": "Нежелательные личные упоминания",
"notifications.policy.title": "………Управлять уведомлениями от…",
"notifications.policy.title": "Управление уведомлениями",
"notifications_permission_banner.enable": "Включить уведомления",
"notifications_permission_banner.how_to_control": "Получайте уведомления даже когда Mastodon закрыт, включив уведомления на рабочем столе. А чтобы лишний шум не отвлекал, вы можете настроить какие уведомления вы хотите получать, нажав на кнопку {icon} выше.",
"notifications_permission_banner.title": "Будьте в курсе происходящего",
@ -679,7 +695,7 @@
"privacy_policy.title": "Политика конфиденциальности",
"recommended": "Рекомендуется",
"refresh": "Обновить",
"regeneration_indicator.label": "Грузим…",
"regeneration_indicator.label": "Загрузка…",
"regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!",
"relative_time.days": "{number} д",
"relative_time.full.days": "{number, plural, one {# день} many {# дней} other {# дня}} назад",
@ -692,15 +708,15 @@
"relative_time.minutes": "{number} мин",
"relative_time.seconds": "{number} с",
"relative_time.today": "сегодня",
"reply_indicator.attachments": "{count, plural, one {# вложение} other {# вложения}}",
"reply_indicator.attachments": "{count, plural, one {# вложение} few {# вложения} other {# вложений}}",
"reply_indicator.cancel": "Отмена",
"reply_indicator.poll": "Опрос",
"report.block": "Заблокировать",
"report.block_explanation": "Вы перестанете видеть посты этого пользователя, и он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять, что вы заблокировали его/её.",
"report.categories.legal": "Правовая информация",
"report.categories.legal": "Нарушение закона",
"report.categories.other": "Другое",
"report.categories.spam": "Спам",
"report.categories.violation": "Содержимое нарушает одно или несколько правил узла",
"report.categories.violation": "Содержимое нарушает одно или несколько правил сервера",
"report.category.subtitle": "Выберите наиболее подходящее",
"report.category.title": "Расскажите нам, что не так с {type}",
"report.category.title_account": "этим профилем",
@ -771,32 +787,32 @@
"server_banner.about_active_users": "Люди, заходившие на этот сервер за последние 30 дней (ежемесячные активные пользователи)",
"server_banner.active_users": "активные пользователи",
"server_banner.administered_by": "Управляется:",
"server_banner.is_one_of_many": "{domain} - это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в fediverse.",
"server_banner.is_one_of_many": "{domain} это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в сети Fediverse.",
"server_banner.server_stats": "Статистика сервера:",
"sign_in_banner.create_account": "Зарегистрироваться",
"sign_in_banner.follow_anyone": "Следите за любым человеком в федеральной вселенной и смотрите все в хронологическом порядке. Никаких алгоритмов, рекламы или клик бейта.",
"sign_in_banner.mastodon_is": "Mastodon - лучший способ быть в курсе всего происходящего.",
"sign_in_banner.follow_anyone": "Подписывайтесь на кого угодно в федивёрсе и смотрите ленту в хронологическом порядке. Никаких алгоритмов, рекламы или кликбейта.",
"sign_in_banner.mastodon_is": "Mastodon лучший способ быть в курсе всего происходящего.",
"sign_in_banner.sign_in": "Войти",
"sign_in_banner.sso_redirect": "Войдите или Зарегистрируйтесь",
"status.admin_account": "Открыть интерфейс модератора для @{name}",
"status.admin_domain": "Открыть интерфейс модерации {domain}",
"status.admin_domain": "Открыть интерфейс модератора для {domain}",
"status.admin_status": "Открыть этот пост в интерфейсе модератора",
"status.block": "Заблокировать @{name}",
"status.bookmark": "Сохранить в закладки",
"status.bookmark": "Добавить в закладки",
"status.cancel_reblog_private": "Не продвигать",
"status.cannot_reblog": "Этот пост не может быть продвинут",
"status.continued_thread": "Продолжение темы",
"status.copy": "Скопировать ссылку на пост",
"status.delete": "Удалить",
"status.detailed_status": "Подробный просмотр обсуждения",
"status.direct": "Лично упоминать @{name}",
"status.direct_indicator": "Личные упоминания",
"status.direct": "Упомянуть @{name} лично",
"status.direct_indicator": "Личное упоминание",
"status.edit": "Изменить",
"status.edited": "Дата последнего изменения: {date}",
"status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}",
"status.embed": "Получить код для встраивания",
"status.favourite": "Избранное",
"status.favourites": "{count, plural, one {в избранном} other {в избранном}}",
"status.favourite": "Добавить в избранное",
"status.favourites": "{count, plural, other {в избранном}}",
"status.filter": "Фильтровать этот пост",
"status.history.created": "{name} создал {date}",
"status.history.edited": "{name} отредактировал(а) {date}",
@ -829,13 +845,13 @@
"status.show_less_all": "Свернуть все спойлеры в ветке",
"status.show_more_all": "Развернуть все спойлеры в ветке",
"status.show_original": "Показать оригинал",
"status.title.with_attachments": "{user} размещено {attachmentCount, plural, one {вложение} other {{attachmentCount} вложений}}",
"status.title.with_attachments": "{user} опубликовал {attachmentCount, plural, one {{attachmentCount} вложение} few {{attachmentCount} вложения} other {{attachmentCount} вложений}}",
"status.translate": "Перевод",
"status.translated_from_with": "Переведено с {lang}, используя {provider}",
"status.uncached_media_warning": "Прослушивание недоступно",
"status.translated_from_with": "Переведено с {lang} с помощью {provider}",
"status.uncached_media_warning": "Предварительный просмотр недоступен",
"status.unmute_conversation": "Не игнорировать обсуждение",
"status.unpin": "Открепить от профиля",
"subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.",
"subscribed_languages.lead": "Посты лишь на выбранных языках будут появляться в вашей домашней ленте и в списках после изменения. Снимите выбор, чтобы получать посты на всех языках.",
"subscribed_languages.save": "Сохранить изменения",
"subscribed_languages.target": "Изменить языки подписки для {target}",
"tabs_bar.home": "Главная",
@ -845,7 +861,7 @@
"time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}",
"time_remaining.moments": "остались считанные мгновения",
"time_remaining.seconds": "{number, plural, one {# секунда} many {# секунд} other {# секунды}}",
"trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний день} few {последние {days} дня} other {последние {days} дней}}",
"trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний {days} день} few {последние {days} дня} other {последние {days} дней}}",
"trends.trending_now": "Самое актуальное",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"units.short.billion": "{count} млрд",

View file

@ -87,11 +87,21 @@
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alternatívny popis",
"announcement.announcement": "Oznámenie",
"annual_report.summary.followers.followers": "sledovatelia",
"annual_report.summary.followers.total": "{count} celkovo",
"annual_report.summary.highlighted_post.by_favourites": "najviac obľúbený príspevok",
"annual_report.summary.highlighted_post.by_reblogs": "najviac vyzdvihovaný príspevok",
"annual_report.summary.highlighted_post.by_replies": "príspevok s najviac odpoveďami",
"annual_report.summary.most_used_app.most_used_app": "najviac používaná aplikácia",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "najviac užívaný hashtag",
"annual_report.summary.new_posts.new_posts": "nové príspevky",
"annual_report.summary.percentile.we_wont_tell_bernie": "Nepovieme Berniemu.",
"attachments_list.unprocessed": "(nespracované)",
"audio.hide": "Skryť zvuk",
"block_modal.show_less": "Zobraziť menej",
"block_modal.show_more": "Zobraziť viac",
"block_modal.they_cant_mention": "Nemôžu ťa spomenúť, alebo nasledovať.",
"block_modal.they_cant_see_posts": "On/a nemôže vidieť tvoje príspevky a ty neuvidíš jej/ho.",
"block_modal.they_will_know": "Môžu vidieť, že sú zablokovaní/ý.",
"block_modal.title": "Blokovať užívateľa?",
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
@ -338,6 +348,7 @@
"hashtag.follow": "Sledovať hashtag",
"hashtag.unfollow": "Prestať sledovať hashtag",
"hashtags.and_other": "…a {count, plural, other {# ďalších}}",
"hints.threads.see_more": "Pozri viac odpovedí na {domain}",
"home.column_settings.show_reblogs": "Zobraziť zdieľania",
"home.column_settings.show_replies": "Zobraziť odpovede",
"home.hide_announcements": "Skryť oznámenia",
@ -345,6 +356,9 @@
"home.pending_critical_update.link": "Zobraziť aktualizácie",
"home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.",
"home.show_announcements": "Zobraziť oznámenia",
"ignore_notifications_modal.filter_instead": "Radšej triediť",
"ignore_notifications_modal.filter_to_act_users": "Stále budeš môcť akceptovať, odmietnuť, alebo nahlásiť užívateľov",
"ignore_notifications_modal.filter_to_avoid_confusion": "Triedenie pomáha vyvarovať sa možnému zmäteniu",
"ignore_notifications_modal.ignore": "Ignoruj upozornenia",
"interaction_modal.description.favourite": "S účtom na Mastodone môžete tento príspevok ohviezdičkovať, tak dať autorovi vedieť, že sa vám páči, a uložiť si ho na neskôr.",
"interaction_modal.description.follow": "S účtom na Mastodone môžete {name} sledovať a vidieť ich príspevky vo svojom domovskom kanáli.",
@ -361,6 +375,7 @@
"interaction_modal.title.follow": "Sledovať {name}",
"interaction_modal.title.reblog": "Zdieľať príspevok od {name}",
"interaction_modal.title.reply": "Odpovedať na príspevok od {name}",
"interaction_modal.title.vote": "Hlasuj v ankete od {name}",
"intervals.full.days": "{number, plural, one {# deň} few {# dni} many {# dní} other {# dní}}",
"intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodín} other {# hodín}}",
"intervals.full.minutes": "{number, plural, one {# minúta} few {# minúty} many {# minút} other {# minút}}",
@ -401,6 +416,7 @@
"lightbox.close": "Zatvoriť",
"lightbox.next": "Ďalej",
"lightbox.previous": "Späť",
"lightbox.zoom_out": "Priblížiť na mieru",
"limited_account_hint.action": "Aj tak zobraziť profil",
"limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.",
"link_preview.author": "Autor: {name}",
@ -428,7 +444,11 @@
"mute_modal.hide_options": "Skryť možnosti",
"mute_modal.indefinite": "Pokiaľ ich neodtíšim",
"mute_modal.show_options": "Zobraziť možnosti",
"mute_modal.they_can_mention_and_follow": "Môže ťa spomenúť a nasledovať, ale ty ho/ju neuvidíš.",
"mute_modal.they_wont_know": "Nebude vedieť, že bol/a stíšený/á.",
"mute_modal.title": "Stíšiť užívateľa?",
"mute_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ho/ju spomínajú.",
"mute_modal.you_wont_see_posts": "Stále uvidí tvoje príspevky, ale ty neuvidíš jeho/jej.",
"navigation_bar.about": "O tomto serveri",
"navigation_bar.administration": "Spravovanie",
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
@ -468,12 +488,15 @@
"notification.label.private_reply": "Súkromná odpoveď",
"notification.label.reply": "Odpoveď",
"notification.mention": "Zmienka",
"notification.mentioned_you": "{name} ťa spomenul/a",
"notification.moderation-warning.learn_more": "Zisti viac",
"notification.moderation_warning": "Dostal/a si varovanie od moderátora",
"notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.",
"notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.",
"notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.",
"notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.",
"notification.own_poll": "Vaša anketa sa skončila",
"notification.poll": "Anketa, v ktorej si hlasoval/a, skončila",
"notification.reblog": "{name} zdieľa váš príspevok",
"notification.relationships_severance_event": "Stratené prepojenia s {name}",
"notification.relationships_severance_event.account_suspension": "Správca z {from} pozastavil/a {target}, čo znamená, že od nich viac nemôžeš dostávať aktualizácie, alebo s nimi interaktovať.",
@ -520,6 +543,8 @@
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
"notifications.policy.accept": "Prijať",
"notifications.policy.accept_hint": "Ukáž v oznámeniach",
"notifications.policy.drop": "Ignoruj",
"notifications.policy.filter": "Triediť",
"notifications.policy.filter_limited_accounts_title": "Moderované účty",
@ -527,6 +552,7 @@
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
"notifications.policy.filter_private_mentions_title": "Nevyžiadané priame spomenutia",
"notifications.policy.title": "Spravuj oznámenia od…",
"notifications_permission_banner.enable": "Povoliť upozornenia na ploche",
"notifications_permission_banner.how_to_control": "Ak chcete dostávať upozornenia, keď Mastodon nie je otvorený, povoľte upozornenia na ploche. Po ich zapnutí môžete presne kontrolovať, ktoré typy interakcií generujú upozornenia na ploche, a to prostredníctvom tlačidla {icon} vyššie.",
"notifications_permission_banner.title": "Nenechajte si nič ujsť",
@ -697,6 +723,7 @@
"status.bookmark": "Pridať záložku",
"status.cancel_reblog_private": "Zrušiť zdieľanie",
"status.cannot_reblog": "Tento príspevok nie je možné zdieľať",
"status.continued_thread": "Pokračujúce vlákno",
"status.copy": "Kopírovať odkaz na príspevok",
"status.delete": "Vymazať",
"status.detailed_status": "Podrobný náhľad celej konverzácie",

View file

@ -526,6 +526,7 @@
"notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer",
"notification.favourite.name_and_others_with_link": "{name} dhe <a>{count, plural, one {# tjetër} other {# të tjerë}}</a> i vunë shenjë postimit tuaj si të parapëlqyer",
"notification.follow": "{name} zuri tju ndjekë",
"notification.follow.name_and_others": "Ju ndoqi {name} dhe <a>{count, plural, one {# tjetër} other {# të tjerë}}</a>",
"notification.follow_request": "{name} ka kërkuar tju ndjekë",
"notification.follow_request.name_and_others": "Ka kërkuar tju ndjekë {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}",
"notification.label.mention": "Përmendje",
@ -584,6 +585,7 @@
"notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta",
"notifications.column_settings.follow": "Ndjekës të rinj:",
"notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:",
"notifications.column_settings.group": "Grupoji",
"notifications.column_settings.mention": "Përmendje:",
"notifications.column_settings.poll": "Përfundime pyetësori:",
"notifications.column_settings.push": "Njoftime Push",

View file

@ -87,10 +87,22 @@
"alert.unexpected.title": "Hoppsan!",
"alt_text_badge.title": "Alt-Text",
"announcement.announcement": "Meddelande",
"annual_report.summary.archetype.booster": "Häftighetsjägaren",
"annual_report.summary.archetype.lurker": "Smygaren",
"annual_report.summary.archetype.oracle": "Oraklet",
"annual_report.summary.archetype.pollster": "Frågaren",
"annual_report.summary.archetype.replier": "Den sociala fjärilen",
"annual_report.summary.followers.followers": "följare",
"annual_report.summary.followers.total": "{count} totalt",
"annual_report.summary.here_it_is": "Här är en tillbakablick på ditt {year}:",
"annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerat inlägg",
"annual_report.summary.highlighted_post.by_reblogs": "mest boostat inlägg",
"annual_report.summary.highlighted_post.by_replies": "inlägg med flest svar",
"annual_report.summary.highlighted_post.possessive": "{name}s",
"annual_report.summary.most_used_app.most_used_app": "mest använda app",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest använda hashtag",
"annual_report.summary.new_posts.new_posts": "nya inlägg",
"annual_report.summary.percentile.text": "<topLabel>Det placerar dig i topp</topLabel><percentage></percentage><bottomLabel>av Mastodon-användare.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi berättar inte för Bernie.",
"annual_report.summary.thanks": "Tack för att du är en del av Mastodon!",
"attachments_list.unprocessed": "(obehandlad)",
@ -412,7 +424,7 @@
"keyboard_shortcuts.blocked": "Öppna listan över blockerade användare",
"keyboard_shortcuts.boost": "Boosta inlägg",
"keyboard_shortcuts.column": "Fokusera kolumn",
"keyboard_shortcuts.compose": "för att fokusera skrivfältet",
"keyboard_shortcuts.compose": "Fokusera skrivfältet",
"keyboard_shortcuts.description": "Beskrivning",
"keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen",
"keyboard_shortcuts.down": "Flytta ner i listan",
@ -421,20 +433,20 @@
"keyboard_shortcuts.favourites": "Öppna favoritlistan",
"keyboard_shortcuts.federated": "Öppna federerad tidslinje",
"keyboard_shortcuts.heading": "Tangentbordsgenvägar",
"keyboard_shortcuts.home": "för att öppna Hem-tidslinjen",
"keyboard_shortcuts.home": "Öppna Hemtidslinjen",
"keyboard_shortcuts.hotkey": "Kommando",
"keyboard_shortcuts.legend": "för att visa denna översikt",
"keyboard_shortcuts.local": "för att öppna Lokal tidslinje",
"keyboard_shortcuts.mention": "för att nämna skaparen",
"keyboard_shortcuts.legend": "Visa denna översikt",
"keyboard_shortcuts.local": "Öppna lokal tidslinje",
"keyboard_shortcuts.mention": "Nämna skaparen",
"keyboard_shortcuts.muted": "Öppna listan över tystade användare",
"keyboard_shortcuts.my_profile": "för att öppna din profil",
"keyboard_shortcuts.notifications": "för att öppna Meddelanden",
"keyboard_shortcuts.open_media": "öppna media",
"keyboard_shortcuts.my_profile": "Öppna din profil",
"keyboard_shortcuts.notifications": "Öppna meddelanden",
"keyboard_shortcuts.open_media": "Öppna media",
"keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg",
"keyboard_shortcuts.profile": "för att öppna skaparens profil",
"keyboard_shortcuts.profile": "Öppna författarens profil",
"keyboard_shortcuts.reply": "Svara på inlägg",
"keyboard_shortcuts.requests": "för att öppna Följförfrågningar",
"keyboard_shortcuts.search": "för att fokusera sökfältet",
"keyboard_shortcuts.requests": "Öppna följförfrågningar",
"keyboard_shortcuts.search": "Fokusera sökfältet",
"keyboard_shortcuts.spoilers": "Visa/dölja CW-fält",
"keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen",
"keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW",
@ -514,6 +526,7 @@
"notification.admin.report_statuses_other": "{name} rapporterade {target}",
"notification.admin.sign_up": "{name} registrerade sig",
"notification.admin.sign_up.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har registrerat sig",
"notification.annual_report.message": "Din {year} #Wrapstodon väntar! Upptäck ditt års höjdpunkter och minnesvärda stunder på Mastodon!",
"notification.annual_report.view": "Visa #Wrapstodon",
"notification.favourite": "{name} favoritmarkerade ditt inlägg",
"notification.favourite.name_and_others_with_link": "{name} och <a>{count, plural, one {# annan} other {# andra}}</a> har favoritmarkerat ditt inlägg",

View file

@ -87,6 +87,13 @@
"alert.unexpected.title": "อุปส์!",
"alt_text_badge.title": "ข้อความแสดงแทน",
"announcement.announcement": "ประกาศ",
"annual_report.summary.followers.followers": "ผู้ติดตาม",
"annual_report.summary.highlighted_post.by_favourites": "โพสต์ที่ได้รับการชื่นชอบมากที่สุด",
"annual_report.summary.highlighted_post.by_reblogs": "โพสต์ที่ได้รับการดันมากที่สุด",
"annual_report.summary.highlighted_post.by_replies": "โพสต์ที่มีการตอบกลับมากที่สุด",
"annual_report.summary.new_posts.new_posts": "โพสต์ใหม่",
"annual_report.summary.percentile.we_wont_tell_bernie": "เราจะไม่บอก Bernie",
"annual_report.summary.thanks": "ขอบคุณสำหรับการเป็นส่วนหนึ่งของ Mastodon!",
"attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)",
"audio.hide": "ซ่อนเสียง",
"block_modal.remote_users_caveat": "เราจะขอให้เซิร์ฟเวอร์ {domain} เคารพการตัดสินใจของคุณ อย่างไรก็ตาม ไม่รับประกันการปฏิบัติตามข้อกำหนดเนื่องจากเซิร์ฟเวอร์บางแห่งอาจจัดการการปิดกั้นแตกต่างกัน โพสต์สาธารณะอาจยังคงปรากฏแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบ",
@ -508,6 +515,7 @@
"notification.admin.report_statuses_other": "{name} ได้รายงาน {target}",
"notification.admin.sign_up": "{name} ได้ลงทะเบียน",
"notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน",
"notification.annual_report.view": "ดู #Wrapstodon",
"notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
"notification.favourite.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ชื่นชอบโพสต์ของคุณ",
"notification.follow": "{name} ได้ติดตามคุณ",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Hay aksi!",
"alt_text_badge.title": "Alternatif metin",
"announcement.announcement": "Duyuru",
"annual_report.summary.archetype.booster": "Trend takipçisi",
"annual_report.summary.archetype.lurker": "Gizli meraklı",
"annual_report.summary.archetype.oracle": "Kahin",
"annual_report.summary.archetype.pollster": "Anketör",
"annual_report.summary.archetype.replier": "Sosyal kelebek",
"annual_report.summary.followers.followers": "takipçiler",
"annual_report.summary.followers.total": "{count} toplam",
"annual_report.summary.here_it_is": "İşte {year} yılı değerlendirmeniz:",
"annual_report.summary.highlighted_post.by_favourites": "en çok beğenilen gönderi",
"annual_report.summary.highlighted_post.by_reblogs": "en çok paylaşılan gönderi",
"annual_report.summary.highlighted_post.by_replies": "en çok yanıt alan gönderi",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "en çok kullanılan uygulama",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "en çok kullanılan etiket",
"annual_report.summary.new_posts.new_posts": "yeni gönderiler",
"annual_report.summary.percentile.text": "<bottomLabel>Mastodon kullanıcılarının</bottomLabel><percentage></percentage><topLabel>üst dilimindesiniz</topLabel>.",
"annual_report.summary.percentile.we_wont_tell_bernie": "Bernie'ye söylemeyiz.",
"annual_report.summary.thanks": "Mastodon'un bir parçası olduğunuz için teşekkürler!",
"attachments_list.unprocessed": "(işlenmemiş)",
"audio.hide": "Sesi gizle",
"block_modal.remote_users_caveat": "{domain} sunucusundan kararınıza saygı duymasını isteyeceğiz. Ancak, Uymaları garanti değildir çünkü bazı sunucular engellemeyi farklı şekilde yapıyorlar. Herkese açık gönderiler giriş yapmamış kullanıcılara görüntülenmeye devam edebilir.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name}, {target} kişisini bildirdi",
"notification.admin.sign_up": "{name} kaydoldu",
"notification.admin.sign_up.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} kaydoldu",
"notification.annual_report.message": "{year} yılı #Wrapstodon'unuz bekliyor! Yılınızın Mastodon'daki öne çıkanlarını ve anılarınızı gösterin!",
"notification.annual_report.view": "#Wrapstodon'u Görüntüle",
"notification.favourite": "{name} gönderinizi beğendi",
"notification.favourite.name_and_others_with_link": "{name} ve <a>{count, plural, one {# diğer kişi} other {# diğer kişi}}</a> gönderinizi beğendi",
"notification.follow": "{name} seni takip etti",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ой!",
"alt_text_badge.title": "Альтернативний текст",
"announcement.announcement": "Оголошення",
"annual_report.summary.archetype.booster": "Мисливець на дописи",
"annual_report.summary.archetype.lurker": "Причаєнець",
"annual_report.summary.archetype.oracle": "Оракул",
"annual_report.summary.archetype.pollster": "Опитувач",
"annual_report.summary.archetype.replier": "Душа компанії",
"annual_report.summary.followers.followers": "підписники",
"annual_report.summary.followers.total": "Загалом {count}",
"annual_report.summary.here_it_is": "Ось ваші підсумки {year} року:",
"annual_report.summary.highlighted_post.by_favourites": "найуподобаніші дописи",
"annual_report.summary.highlighted_post.by_reblogs": "найпоширюваніші дописи",
"annual_report.summary.highlighted_post.by_replies": "найкоментованіші дописи",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег",
"annual_report.summary.new_posts.new_posts": "нові дописи",
"annual_report.summary.percentile.text": "<topLabel>Це виводить вас в топ</topLabel><percentage></percentage><bottomLabel> користувачів Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Ми не скажемо Bernie.",
"annual_report.summary.thanks": "Дякуємо, що ви є частиною Mastodon!",
"attachments_list.unprocessed": "(не оброблено)",
"audio.hide": "Сховати аудіо",
"block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} повідомляє про {target}",
"notification.admin.sign_up": "{name} приєдналися",
"notification.admin.sign_up.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} зареєструвалися",
"notification.annual_report.message": "#Wrapstodon за {year} чекає на вас! Дізнайтеся про найяскравіші та пам'ятні моменти вашого року на Mastodon!",
"notification.annual_report.view": "Переглянути #Wrapstodon",
"notification.favourite": "Ваш допис сподобався {name}",
"notification.favourite.name_and_others_with_link": "{name} та <a>{count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}</a> вподобали ваш допис",
"notification.follow": "{name} підписалися на вас",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ốiii!",
"alt_text_badge.title": "Văn bản thay thế",
"announcement.announcement": "Có gì mới?",
"annual_report.summary.archetype.booster": "Hiệp sĩ ngầu",
"annual_report.summary.archetype.lurker": "Kẻ rình mò",
"annual_report.summary.archetype.oracle": "Nhà tiên tri",
"annual_report.summary.archetype.pollster": "Chuyên gia khảo sát",
"annual_report.summary.archetype.replier": "Bướm xã hội",
"annual_report.summary.followers.followers": "người theo dõi",
"annual_report.summary.followers.total": "tổng {count}",
"annual_report.summary.here_it_is": "Nhìn lại năm {year} của bạn:",
"annual_report.summary.highlighted_post.by_favourites": "tút được thích nhiều nhất",
"annual_report.summary.highlighted_post.by_reblogs": "tút được đăng lại nhiều nhất",
"annual_report.summary.highlighted_post.by_replies": "tút được trả lời nhiều nhất",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "app dùng nhiều nhất",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag dùng nhiều nhất",
"annual_report.summary.new_posts.new_posts": "tút mới",
"annual_report.summary.percentile.text": "<topLabel>Bạn nằm trong top</topLabel><percentage></percentage><bottomLabel>thành viên Mastodon.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Chúng tôi sẽ không kể cho Bernie.",
"annual_report.summary.thanks": "Cảm ơn đã trở thành một phần của Mastodon!",
"attachments_list.unprocessed": "(chưa xử lí)",
"audio.hide": "Ẩn âm thanh",
"block_modal.remote_users_caveat": "Chúng tôi sẽ yêu cầu {domain} tôn trọng quyết định của bạn. Tuy nhiên, việc tuân thủ không được đảm bảo vì một số máy chủ có thể xử lý việc chặn theo cách khác nhau. Các tút công khai vẫn có thể hiển thị đối với người dùng chưa đăng nhập.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} báo cáo {target}",
"notification.admin.sign_up": "{name} tham gia máy chủ của bạn",
"notification.admin.sign_up.name_and_others": "{name} và {count, plural, other {# người}} đã đăng ký",
"notification.annual_report.message": "#Wrapstodon {year} của bạn có rồi đây! Hãy chia sẻ những điểm nhấn và khoảnh khắc đáng nhớ trên Mastodon của bạn trong năm qua!",
"notification.annual_report.view": "Xem #Wrapstodon",
"notification.favourite": "{name} thích tút của bạn",
"notification.favourite.name_and_others_with_link": "{name} và <a>{count, plural, other {# người khác}}</a> đã thích tút của bạn",
"notification.follow": "{name} theo dõi bạn",

View file

@ -87,15 +87,15 @@
"alert.unexpected.title": "哎呀!",
"alt_text_badge.title": "ALT 說明文字",
"announcement.announcement": "公告",
"annual_report.summary.archetype.booster": "酷炫獵人",
"annual_report.summary.archetype.lurker": "潛伏者",
"annual_report.summary.archetype.booster": "酷炫獵人",
"annual_report.summary.archetype.lurker": "潛水高手",
"annual_report.summary.archetype.oracle": "先知",
"annual_report.summary.archetype.pollster": "民調人員",
"annual_report.summary.archetype.pollster": "民調專家",
"annual_report.summary.archetype.replier": "社交菁英",
"annual_report.summary.followers.followers": "跟隨者",
"annual_report.summary.followers.total": "總共 {count}",
"annual_report.summary.here_it_is": "以下是您的{year}年度回顧:",
"annual_report.summary.highlighted_post.by_favourites": "最愛的嘟文",
"annual_report.summary.here_it_is": "以下是您的 {year} 年度回顧:",
"annual_report.summary.highlighted_post.by_favourites": "最多被加到最愛的嘟文",
"annual_report.summary.highlighted_post.by_reblogs": "最多轉嘟的嘟文",
"annual_report.summary.highlighted_post.by_replies": "最多回覆的嘟文",
"annual_report.summary.highlighted_post.possessive": "{name} 的",
@ -103,7 +103,8 @@
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最常使用的主題標籤",
"annual_report.summary.new_posts.new_posts": "新嘟文",
"annual_report.summary.percentile.text": "<topLabel>這讓您成為前</topLabel><percentage></percentage><bottomLabel>Mastodon 的使用者。</bottomLabel>",
"annual_report.summary.thanks": "感謝您成為 Mastodon 的一員!",
"annual_report.summary.percentile.we_wont_tell_bernie": "我們不會告訴 Bernie。",
"annual_report.summary.thanks": "感謝您成為 Mastodon 的一份子!",
"attachments_list.unprocessed": "(未經處理)",
"audio.hide": "隱藏音訊",
"block_modal.remote_users_caveat": "我們會要求 {domain} 伺服器尊重您的決定。然而,我們無法保證所有伺服器皆會遵守,某些伺服器可能以不同方式處理封鎖。未登入之使用者仍可能看見您的公開嘟文。",
@ -525,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} 已檢舉 {target}",
"notification.admin.sign_up": "{name} 已經註冊",
"notification.admin.sign_up.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已註冊",
"notification.annual_report.message": "您的 {year} #Wrapstodon 正等著您!揭開您 Mastodon 上的年度精彩時刻與值得回憶的難忘時光!",
"notification.annual_report.view": "檢視 #Wrapstodon",
"notification.favourite": "{name} 已將您的嘟文加入最愛",
"notification.favourite.name_and_others_with_link": "{name} 與<a>{count, plural, other {其他 # 個人}}</a>已將您的嘟文加入最愛",
"notification.follow": "{name} 已跟隨您",

View file

@ -535,3 +535,10 @@ a.sparkline {
::-webkit-scrollbar-thumb {
opacity: 0.25;
}
.notification-group--annual-report {
.notification-group__icon,
.notification-group__main .link-button {
color: var(--indigo-3);
}
}

View file

@ -103,6 +103,11 @@
background-color: var(--goldenrod-2);
}
}
.status-card,
.hashtag-bar {
display: none;
}
}
&__followers {
@ -237,7 +242,7 @@
}
&__number {
font-size: 61px;
font-size: 54px;
font-weight: 600;
line-height: 73px;
color: var(--goldenrod-2);
@ -306,7 +311,7 @@
}
.annual-report-modal {
max-width: 480px;
max-width: 600px;
background: var(--indigo-1);
border-radius: 16px;
display: flex;

View file

@ -1,6 +1,10 @@
# frozen_string_literal: true
class AccountReachFinder
RECENT_LIMIT = 2_000
STATUS_LIMIT = 200
STATUS_SINCE = 2.days
def initialize(account)
@account = account
end
@ -20,13 +24,27 @@ class AccountReachFinder
end
def recently_mentioned_inboxes
cutoff_id = Mastodon::Snowflake.id_at(2.days.ago, with_random: false)
recent_statuses = @account.statuses.recent.where(id: cutoff_id...).limit(200)
Account.joins(:mentions).where(mentions: { status: recent_statuses }).inboxes.take(2000)
Account
.joins(:mentions)
.where(mentions: { status: recent_statuses })
.inboxes
.take(RECENT_LIMIT)
end
def relay_inboxes
Relay.enabled.pluck(:inbox_url)
end
def oldest_status_id
Mastodon::Snowflake
.id_at(STATUS_SINCE.ago, with_random: false)
end
def recent_statuses
@account
.statuses
.recent
.where(id: oldest_status_id...)
.limit(STATUS_LIMIT)
end
end

View file

@ -6,7 +6,7 @@ class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck
end
def pass?
!ActiveRecord::Base.connection.migration_context.needs_migration?
!ActiveRecord::Base.connection_pool.migration_context.needs_migration?
end
def message

View file

@ -334,14 +334,10 @@ class Request
def check_private_address(address, host)
addr = IPAddr.new(address.to_s)
return if Rails.env.development? || private_address_exceptions.any? { |range| range.include?(addr) }
return if Rails.env.development? || Rails.configuration.x.private_address_exceptions.any? { |range| range.include?(addr) }
raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
end
def private_address_exceptions
@private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) }
end
end
end

View file

@ -19,7 +19,7 @@ class SuspiciousSignInDetector
end
def previously_seen_ip?(request)
@user.ips.exists?(['ip <<= ?', masked_ip(request)])
@user.ips.contained_by(masked_ip(request)).exists?
end
def freshly_signed_up?

View file

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

View file

@ -94,6 +94,8 @@ class Account < ApplicationRecord
include Account::Interactions
include Account::Merging
include Account::Search
include Account::Sensitizes
include Account::Silences
include Account::StatusesSearch
include Account::OtherSettings
include Account::MasterSettings
@ -136,9 +138,6 @@ class Account < ApplicationRecord
scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
scope :silenced, -> { where.not(silenced_at: nil) }
scope :sensitized, -> { where.not(sensitized_at: nil) }
scope :without_silenced, -> { where(silenced_at: nil) }
scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
scope :recent, -> { reorder(id: :desc) }
scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) }
@ -271,30 +270,6 @@ class Account < ApplicationRecord
ResolveAccountService.new.call(acct) unless local?
end
def silenced?
silenced_at.present?
end
def silence!(date = Time.now.utc)
update!(silenced_at: date)
end
def unsilence!
update!(silenced_at: nil)
end
def sensitized?
sensitized_at.present?
end
def sensitize!(date = Time.now.utc)
update!(sensitized_at: date)
end
def unsensitize!
update!(sensitized_at: nil)
end
def memorialize!
update!(memorial: true)
end

View file

@ -136,7 +136,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
end
def without_direct_scope
Status.where.not(visibility: :direct)
Status.not_direct_visibility
end
def old_enough_scope(max_id = nil)

View file

@ -33,6 +33,7 @@ class Admin::ActionLogFilter
create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze,
create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze,
create_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze,
create_relay: { target_type: 'Relay', action: 'create' }.freeze,
create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze,
create_user_role: { target_type: 'UserRole', action: 'create' }.freeze,
create_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'create' }.freeze,
@ -42,6 +43,7 @@ class Admin::ActionLogFilter
destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze,
destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze,
destroy_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze,
destroy_relay: { target_type: 'Relay', action: 'destroy' }.freeze,
destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze,
destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze,
@ -51,8 +53,10 @@ class Admin::ActionLogFilter
disable_2fa_user: { target_type: 'User', action: 'disable_2fa' }.freeze,
disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
disable_user: { target_type: 'User', action: 'disable' }.freeze,
disable_relay: { target_type: 'Relay', action: 'disable' }.freeze,
enable_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze,
enable_user: { target_type: 'User', action: 'enable' }.freeze,
enable_relay: { target_type: 'Relay', action: 'enable' }.freeze,
memorialize_account: { target_type: 'Account', action: 'memorialize' }.freeze,
promote_user: { target_type: 'User', action: 'promote' }.freeze,
remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze,

View file

@ -32,7 +32,7 @@ class Admin::StatusFilter
def scope_for(key, _value)
case key.to_s
when 'media'
Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).reorder('statuses.id desc')
Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).recent
else
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
end

View file

@ -21,6 +21,9 @@
class BulkImport < ApplicationRecord
self.inheritance_column = false
ARCHIVE_PERIOD = 1.week
CONFIRM_PERIOD = 10.minutes
belongs_to :account
has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all
@ -42,6 +45,9 @@ class BulkImport < ApplicationRecord
validates :type, presence: true
scope :archival_completed, -> { where(created_at: ..ARCHIVE_PERIOD.ago) }
scope :confirmation_missed, -> { state_unconfirmed.where(created_at: ..CONFIRM_PERIOD.ago) }
def self.progress!(bulk_import_id, imported: false)
# Use `increment_counter` so that the incrementation is done atomically in the database
BulkImport.increment_counter(:processed_items, bulk_import_id)

View file

@ -0,0 +1,21 @@
# frozen_string_literal: true
module Account::Sensitizes
extend ActiveSupport::Concern
included do
scope :sensitized, -> { where.not(sensitized_at: nil) }
end
def sensitized?
sensitized_at.present?
end
def sensitize!(date = Time.now.utc)
update!(sensitized_at: date)
end
def unsensitize!
update!(sensitized_at: nil)
end
end

View file

@ -0,0 +1,22 @@
# frozen_string_literal: true
module Account::Silences
extend ActiveSupport::Concern
included do
scope :silenced, -> { where.not(silenced_at: nil) }
scope :without_silenced, -> { where(silenced_at: nil) }
end
def silenced?
silenced_at.present?
end
def silence!(date = Time.now.utc)
update!(silenced_at: date)
end
def unsilence!
update!(silenced_at: nil)
end
end

View file

@ -0,0 +1,10 @@
# frozen_string_literal: true
module InetContainer
extend ActiveSupport::Concern
included do
scope :containing, ->(value) { where('ip >>= ?', value) }
scope :contained_by, ->(value) { where('ip <<= ?', value) }
end
end

View file

@ -15,7 +15,9 @@ module Status::SafeReblogInsert
#
# The code is kept similar to ActiveRecord::Persistence code and calls it
# directly when we are not handling a reblog.
def _insert_record(values, returning)
#
# https://github.com/rails/rails/blob/v7.2.1.1/activerecord/lib/active_record/persistence.rb#L238-L263
def _insert_record(connection, values, returning)
return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present?
primary_key = self.primary_key
@ -30,16 +32,21 @@ module Status::SafeReblogInsert
# The following line departs from stock ActiveRecord
# Original code was:
# im.insert(values.transform_keys { |name| arel_table[name] })
# im = Arel::InsertManager.new(arel_table)
# Instead, we use a custom builder when a reblog is happening:
im = _compile_reblog_insert(values)
connection.insert(im, "#{self} Create", primary_key || false, primary_key_value, returning: returning).tap do |result|
with_connection do |_c|
connection.insert(
im, "#{self} Create", primary_key || false, primary_key_value,
returning: returning
).tap do |result|
# Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
# For our purposes, it's equivalent to a foreign key constraint violation
raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil?
end
end
end
def _compile_reblog_insert(values)
# This is somewhat equivalent to the following code of ActiveRecord::Persistence:

View file

@ -28,6 +28,8 @@ class EmailDomainBlock < ApplicationRecord
validates :domain, presence: true, uniqueness: true, domain: true
scope :parents, -> { where(parent_id: nil) }
# Used for adding multiple blocks at once
attr_accessor :other_domains

View file

@ -17,6 +17,7 @@ class IpBlock < ApplicationRecord
CACHE_KEY = 'blocked_ips'
include Expireable
include InetContainer
include Paginable
enum :severity, {

View file

@ -25,6 +25,10 @@ class Relay < ApplicationRecord
alias enabled? accepted?
def to_log_human_identifier
inbox_url
end
def enable!
activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
payload = Oj.dump(follow_activity(activity_id))

View file

@ -15,6 +15,7 @@ class ScheduledStatus < ApplicationRecord
TOTAL_LIMIT = 300
DAILY_LIMIT = 25
MINIMUM_OFFSET = 5.minutes.freeze
belongs_to :account, inverse_of: :scheduled_statuses
has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify
@ -26,7 +27,7 @@ class ScheduledStatus < ApplicationRecord
private
def validate_future_date
errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET
errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + MINIMUM_OFFSET
end
def validate_total_limit

View file

@ -30,6 +30,8 @@ class SessionActivation < ApplicationRecord
DEFAULT_SCOPES = %w(read write follow).freeze
scope :latest, -> { order(id: :desc) }
class << self
def active?(id)
id && exists?(session_id: id)
@ -48,7 +50,7 @@ class SessionActivation < ApplicationRecord
end
def purge_old
order('created_at desc').offset(Rails.configuration.x.max_session_activations).destroy_all
latest.offset(Rails.configuration.x.max_session_activations).destroy_all
end
def exclusive(id)

View file

@ -24,7 +24,7 @@ class SoftwareUpdate < ApplicationRecord
class << self
def check_enabled?
ENV['UPDATE_CHECK_URL'] != ''
Rails.configuration.x.mastodon.software_update_url.present?
end
def pending_to_a

View file

@ -163,6 +163,7 @@ class Status < ApplicationRecord
scope :distributable_visibility, -> { where(visibility: %i(public public_unlisted login unlisted)) }
scope :distributable_visibility_for_anonymous, -> { where(visibility: %i(public public_unlisted unlisted)) }
scope :list_eligible_visibility, -> { where(visibility: %i(public public_unlisted login unlisted private)) }
scope :not_direct_visibility, -> { where.not(visibility: :direct) }
after_create_commit :trigger_create_webhooks
after_update_commit :trigger_update_webhooks

View file

@ -130,7 +130,7 @@ class User < ApplicationRecord
scope :signed_in_recently, -> { where(current_sign_in_at: ACTIVE_DURATION.ago..) }
scope :not_signed_in_recently, -> { where(current_sign_in_at: ...ACTIVE_DURATION.ago) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value).group('users.id') }
scope :matches_ip, ->(value) { left_joins(:ips).merge(IpBlock.contained_by(value)).group('users.id') }
before_validation :sanitize_role
before_create :set_approved
@ -363,7 +363,7 @@ class User < ApplicationRecord
Doorkeeper::AccessGrant.by_resource_owner(self).update_all(revoked_at: Time.now.utc)
Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch|
batch.update_all(revoked_at: Time.now.utc)
batch.touch_all(:revoked_at)
Web::PushSubscription.where(access_token_id: batch).delete_all
# Revoke each access token for the Streaming API, since `update_all``
@ -467,7 +467,7 @@ class User < ApplicationRecord
end
def sign_up_from_ip_requires_approval?
sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.exists?(['ip >>= ?', sign_up_ip.to_s])
sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.containing(sign_up_ip.to_s).exists?
end
def sign_up_email_requires_approval?

View file

@ -11,6 +11,7 @@
class UserIp < ApplicationRecord
include DatabaseViewRecord
include InetContainer
self.primary_key = :user_id

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
attributes :client_id, :client_secret
attributes :client_id, :client_secret, :client_secret_expires_at
def client_id
object.uid
@ -10,4 +10,10 @@ class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
def client_secret
object.secret
end
# Added for future forwards compatibility when we may decide to expire OAuth
# Applications. Set to zero means that the client_secret never expires.
def client_secret_expires_at
0
end
end

View file

@ -6,8 +6,6 @@ class PostStatusService < BaseService
include DtlHelper
include NgRuleHelper
MIN_SCHEDULE_OFFSET = 5.minutes.freeze
class UnexpectedMentionsError < StandardError
attr_reader :accounts

View file

@ -27,7 +27,7 @@ class SoftwareUpdateCheckService < BaseService
end
def api_url
ENV.fetch('UPDATE_CHECK_URL', 'https://kmy.blue/update-check')
Rails.configuration.x.mastodon.software_update_url
end
def version

View file

@ -12,7 +12,7 @@ class UnallowDomainService < BaseService
private
def suspend_accounts!(domain)
Account.where(domain: domain).in_batches.update_all(suspended_at: Time.now.utc)
Account.where(domain: domain).in_batches.touch_all(:suspended_at)
AfterUnallowDomainWorker.perform_async(domain)
end
end

View file

@ -16,7 +16,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: @time_period.last,
href: admin_accounts_path(origin: 'local'),
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil,
label: t('admin.dashboard.new_users'),
measure: 'new_users',
start_at: @time_period.first
@ -24,7 +24,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: @time_period.last,
href: admin_accounts_path(origin: 'local'),
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil,
label: t('admin.dashboard.active_users'),
measure: 'active_users',
start_at: @time_period.first
@ -39,7 +39,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: @time_period.last,
href: admin_reports_path,
href: current_user.can?(:manage_reports) ? admin_reports_path : nil,
label: t('admin.dashboard.opened_reports'),
measure: 'opened_reports',
start_at: @time_period.first
@ -47,7 +47,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: @time_period.last,
href: admin_reports_path(resolved: '1'),
href: current_user.can?(:manage_reports) ? admin_reports_path(resolved: '1') : nil,
label: t('admin.dashboard.resolved_reports'),
measure: 'resolved_reports',
start_at: @time_period.first

View file

@ -7,7 +7,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: period_end_at,
href: admin_accounts_path(origin: 'remote', by_domain: instance_domain),
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'remote', by_domain: instance_domain) : nil,
label: t('admin.instances.dashboard.instance_accounts_measure'),
measure: 'instance_accounts',
params: { domain: instance_domain },
@ -43,7 +43,7 @@
.dashboard__item
= react_admin_component :counter,
end_at: period_end_at,
href: admin_reports_path(by_target_domain: instance_domain),
href: current_user.can?(:manage_reports) ? admin_reports_path(by_target_domain: instance_domain) : nil,
label: t('admin.instances.dashboard.instance_reports_measure'),
measure: 'instance_reports',
params: { domain: instance_domain },

View file

@ -27,7 +27,7 @@ class Scheduler::ScheduledStatusesScheduler
end
def due_statuses
ScheduledStatus.where(scheduled_at: ..Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET)
ScheduledStatus.where(scheduled_at: ..time_due_at)
end
def expired_statuses
@ -41,7 +41,7 @@ class Scheduler::ScheduledStatusesScheduler
end
def due_announcements
Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET)
Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', time_due_at)
end
def unpublish_expired_announcements!
@ -51,4 +51,8 @@ class Scheduler::ScheduledStatusesScheduler
def expired_announcements
Announcement.published.where('ends_at IS NOT NULL AND ends_at <= ?', Time.now.utc)
end
def time_due_at
Time.now.utc + ScheduledStatus::MINIMUM_OFFSET
end
end

View file

@ -13,6 +13,8 @@ class Web::PushNotificationWorker
@subscription = Web::PushSubscription.find(subscription_id)
@notification = Notification.find(notification_id)
return if @notification.updated_at < TTL.ago
# Polymorphically associated activity could have been deleted
# in the meantime, so we have to double-check before proceeding
return unless @notification.activity.present? && @subscription.pushable?(@notification)

View file

@ -2,5 +2,6 @@
# This file is used by Rack-based servers to start the application.
require File.expand_path('config/environment', __dir__)
require_relative 'config/environment'
run Rails.application

View file

@ -52,8 +52,6 @@ require_relative '../lib/action_dispatch/remote_ip_extensions'
require_relative '../lib/stoplight/redis_data_store_extensions'
require_relative '../lib/active_record/database_tasks_extensions'
require_relative '../lib/active_record/batches'
require_relative '../lib/active_record/with_recursive'
require_relative '../lib/arel/union_parenthesizing'
require_relative '../lib/simple_navigation/item_extensions'
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
@ -61,10 +59,7 @@ Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
module Mastodon
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 7.1
# Explicitly set the cache format version to align with Rails version
config.active_support.cache_format_version = 7.1
config.load_defaults 7.2
# Please, add to the `ignore` list any other `lib` subdirectories that do
# not contain `.rb` files, or that should not be reloaded or eager loaded.
@ -110,6 +105,7 @@ module Mastodon
end
config.x.captcha = config_for(:captcha)
config.x.mastodon = config_for(:mastodon)
config.x.translation = config_for(:translation)
config.to_prepare do

View file

@ -37,11 +37,6 @@ Rails.application.configure do
config.action_controller.forgery_protection_origin_check = ENV['DISABLE_FORGERY_REQUEST_PROTECTION'].nil?
ActiveSupport::Logger.new($stdout).tap do |logger|
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
# Generate random VAPID keys
Webpush.generate_key.tap do |vapid_key|
config.x.vapid_private_key = vapid_key.private_key
@ -51,6 +46,8 @@ Rails.application.configure do
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
# Disable caching for Action Mailer templates even if Action Controller
# caching is enabled.
config.action_mailer.perform_caching = false
# Print deprecation notices to the Rails logger.
@ -89,6 +86,9 @@ Rails.application.configure do
# Raise error when a before_action's only/except options reference missing actions.
config.action_controller.raise_on_missing_callback_actions = true
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
config.generators.apply_rubocop_autocorrect_after_generate!
end
Redis.raise_deprecations = true

View file

@ -17,7 +17,6 @@ Rails.application.configure do
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
# Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
# key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
@ -26,8 +25,11 @@ Rails.application.configure do
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# Disable serving static files from `public/`, relying on NGINX/Apache to do so instead.
# config.public_file_server.enabled = false
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.asset_host = "http://assets.example.com"
config.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
# Specifies the header that your server uses for sending files.
config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present?
@ -37,6 +39,10 @@ Rails.application.configure do
# Allow to specify public IP of reverse proxy if it's needed
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
# Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
# config.assume_ssl = true
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = true
# Skip http-to-https redirect for the default health check endpoint.
@ -46,14 +52,19 @@ Rails.application.configure do
},
}
# Info include generic and useful information about system operation, but avoids logging too much
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
# want to log everything, set the level to "debug".
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym
# Log to STDOUT by default
config.logger = ActiveSupport::Logger.new($stdout)
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
# Prepend all log lines with the following tags.
config.log_tags = [:request_id]
# "info" includes generic and useful information about system operation, but avoids logging too much
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
# want to log everything, set the level to "debug".
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info')
# Use a different cache store in production.
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
@ -61,6 +72,8 @@ Rails.application.configure do
# config.active_job.queue_adapter = :resque
# config.active_job.queue_name_prefix = "mastodon_production"
# Disable caching for Action Mailer templates even if Action Controller
# caching is enabled.
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
@ -87,18 +100,8 @@ Rails.application.configure do
{ key: controller.signature_key_id } if controller.respond_to?(:signed_request?) && controller.signed_request?
end
# Use a different logger for distributed setups.
# require "syslog/logger"
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
# Log to STDOUT by default
config.logger = ActiveSupport::Logger.new($stdout)
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
config.action_mailer.perform_caching = false
# E-mails

View file

@ -19,8 +19,6 @@ Rails.application.configure do
# loading is working properly before deploying your code.
config.eager_load = ENV['CI'].present?
config.assets_digest = false
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
@ -32,6 +30,8 @@ Rails.application.configure do
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
# Disable caching for Action Mailer templates even if Action Controller
# caching is enabled.
config.action_mailer.perform_caching = false
config.action_mailer.default_options = { from: 'notifications@localhost' }
@ -41,6 +41,10 @@ Rails.application.configure do
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
# Unlike controllers, the mailer instance doesn't have any context about the
# incoming request so you'll need to provide the :host parameter yourself.
config.action_mailer.default_url_options = { host: 'www.example.com' }
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
@ -58,7 +62,6 @@ Rails.application.configure do
# Raise exceptions for disallowed deprecations.
config.active_support.disallowed_deprecation = :raise
config.i18n.default_locale = :en
config.i18n.fallbacks = true
# Tell Active Support which deprecation messages to disallow.

View file

@ -0,0 +1,5 @@
# frozen_string_literal: true
Rails.application.configure do
config.x.private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) }
end

View file

@ -60,6 +60,7 @@ ro:
error:
title: A apărut o eroare
new:
prompt_html: "%{client_name} ar dori să vă acceseze contul. <strong>Aprobați această solicitare numai dacă recunoașteți și aveți încredere în această sursă.</strong>"
review_permissions: Revizuiți permisiunile
title: Autorizare necesară
show:
@ -82,6 +83,7 @@ ro:
access_denied: Proprietarul de resurse sau serverul de autorizare a refuzat cererea.
credential_flow_not_configured: Fluxul Resurselor de Acreditări Parole a eșuat din cauza faptului că Doorkeeper.configure.resource_owner_from_credentials nu este configurat.
invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată.
invalid_code_challenge_method: Metoda de provocare a codului trebuie să fie S256, simplu nu este acceptată.
invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client.
invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid.
invalid_request:
@ -134,6 +136,7 @@ ro:
media: Atașamente media
mutes: Pus pe silențios
notifications: Notificări
profile: Profilul tău Mastodon
push: Notificări push
reports: Rapoarte
search: Căutare
@ -148,12 +151,23 @@ ro:
scopes:
admin:read: citește toate datele de pe server
admin:read:accounts: citește informații sensibile ale tuturor conturilor
admin:read:canonical_email_blocks: citește informații sensibile ale tuturor blocurilor de e-mail canonice
admin:read:domain_allows: citește informații sensibile ale tuturor domeniilor permise
admin:read:domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu
admin:read:email_domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu de e-mail
admin:read:ip_blocks: citește informații sensibile ale tuturor blocurilor IP
admin:read:reports: citește informații sensibile din toate rapoartele și conturile raportate
admin:write: modifică toate datele de pe server
admin:write:accounts: efectuează acțiuni de moderare pe conturi
admin:write:canonical_email_blocks: efectuează acțiuni de moderare pe blocurile de e-mail canonice
admin:write:domain_allows: efectuează acțiuni de moderare pe domeniile permise
admin:write:domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu
admin:write:email_domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu de e-mail
admin:write:ip_blocks: efectuează acțiuni de moderare pe blocurile IP
admin:write:reports: efectuează acțiuni de moderare pe rapoarte
crypto: utilizează criptare la ambele capete
follow: modifică relațiile contului
profile: citește doar informațiile de profil ale contului tău
push: primește notificările tale push
read: citește toate datele contului tău
read:accounts: vede informațiile privind conturile

View file

@ -72,7 +72,7 @@ sv:
revoke: Är du säker?
index:
authorized_at: Godkändes den %{date}
description_html: Dessa applikationer har åtkomst till ditt konto genom API:et. Om det finns applikationer du inte känner igen här, eller om en applikation inte fungerar, kan du återkalla dess åtkomst.
description_html: Detta är program som kan komma åt ditt konto med hjälp av API. Om det finns program som du inte känner igen här, eller om ett program är inte fungerar kan du återkalla dess åtkomst.
last_used_at: Användes senast %{date}
never_used: Aldrig använd
scopes: Behörigheter

View file

@ -21,6 +21,7 @@ el:
one: Ανάρτηση
other: Αναρτήσεις
posts_tab_heading: Αναρτήσεις
self_follow_error: Δεν επιτρέπεται να ακολουθήσεις τον δικό σου λογαριασμό
admin:
account_actions:
action: Εκτέλεση ενέργειας

View file

@ -193,6 +193,7 @@ en:
create_domain_block: Create Domain Block
create_email_domain_block: Create Email Domain Block
create_ip_block: Create IP rule
create_relay: Create Relay
create_unavailable_domain: Create Unavailable Domain
create_user_role: Create Role
demote_user: Demote User
@ -204,14 +205,17 @@ en:
destroy_email_domain_block: Delete Email Domain Block
destroy_instance: Purge Domain
destroy_ip_block: Delete IP rule
destroy_relay: Delete Relay
destroy_status: Delete Post
destroy_unavailable_domain: Delete Unavailable Domain
destroy_user_role: Destroy Role
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
disable_relay: Disable Relay
disable_sign_in_token_auth_user: Disable Email Token Authentication for User
disable_user: Disable User
enable_custom_emoji: Enable Custom Emoji
enable_relay: Enable Relay
enable_sign_in_token_auth_user: Enable Email Token Authentication for User
enable_user: Enable User
force_cw_status: Add CW to Post
@ -257,6 +261,7 @@ en:
create_domain_block_html: "%{name} blocked domain %{target}"
create_email_domain_block_html: "%{name} blocked email domain %{target}"
create_ip_block_html: "%{name} created rule for IP %{target}"
create_relay_html: "%{name} created a relay %{target}"
create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}"
create_user_role_html: "%{name} created %{target} role"
demote_user_html: "%{name} demoted user %{target}"
@ -268,14 +273,17 @@ en:
destroy_email_domain_block_html: "%{name} unblocked email domain %{target}"
destroy_instance_html: "%{name} purged domain %{target}"
destroy_ip_block_html: "%{name} deleted rule for IP %{target}"
destroy_relay_html: "%{name} deleted the relay %{target}"
destroy_status_html: "%{name} removed post by %{target}"
destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}"
destroy_user_role_html: "%{name} deleted %{target} role"
disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}"
disable_custom_emoji_html: "%{name} disabled emoji %{target}"
disable_relay_html: "%{name} disabled the relay %{target}"
disable_sign_in_token_auth_user_html: "%{name} disabled email token authentication for %{target}"
disable_user_html: "%{name} disabled login for user %{target}"
enable_custom_emoji_html: "%{name} enabled emoji %{target}"
enable_relay_html: "%{name} enabled the relay %{target}"
enable_sign_in_token_auth_user_html: "%{name} enabled email token authentication for %{target}"
enable_user_html: "%{name} enabled login for user %{target}"
force_cw_status_html: "%{name} turned post by %{target} cw"

View file

@ -1368,6 +1368,44 @@ fo:
merge_long: Varðveit verandi teigarøð og legg nýggjar afturat
overwrite: Skriva omaná
overwrite_long: Legg nýggj teigarøð inn fyri tey verandi
overwrite_preambles:
blocking_html:
one: Tú ert í ferð við at <strong>útskifta blokeringslistan hjá tær</strong> við upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>útskifta blokeringslistan hjá tær</strong> við upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong>.
bookmarks_html:
one: Tú ert í ferð við at <strong>útskifta tíni bókamerki</strong> við upp til <strong>%{count} posti</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>útskifta tíni bókamerki</strong> við upp til <strong>%{count} postum</strong> frá <strong>%{filename}</strong>.
domain_blocking_html:
one: Tú ert í ferð við at <strong>útskifta navnaøkisblokeringslistan hjá tær</strong> við upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>útskifta navnaøkisblokeringslistan hjá tær</strong> við upp til <strong>%{count} navnaøkjum</strong> frá <strong>%{filename}</strong>.
following_html:
one: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong> og <strong>at gevast at fylgja øðrum</strong>.
other: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong> og <strong>at gevast at fylgja øðrum</strong>.
lists_html:
one: Tú ert í ferð við at <strong>skifta listarnar hjá tær út</strong> við tað, sum er í <strong>%{filename}</strong>. Upp til <strong>%{count} konta</strong> verður løgd afturat nýggjum listum.
other: Tú ert í ferð við at <strong>skifta listarnar hjá tær út</strong> við tað, sum er í <strong>%{filename}</strong>. Upp til <strong>%{count} kontur</strong> verða lagdar afturat nýggjum listum.
muting_html:
one: Tú ert í ferð við at <strong>útskifta listan hjá tær við doyvdum kontum</strong> við upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>útskifta listan hjá tær við doyvdum kontum</strong> við upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong>.
preambles:
blocking_html:
one: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
bookmarks_html:
one: Tú ert í ferð við at leggja upp til <strong>%{count} post</strong> frá <strong>%{filename}</strong> afturat tínum <strong>bókamerkjum</strong>.
other: Tú ert í ferð við at leggja upp til <strong>%{count} postar</strong> frá <strong>%{filename}</strong> afturat tínum <strong>bókamerkjum</strong>.
domain_blocking_html:
one: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
following_html:
one: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
lists_html:
one: Tú ert í ferð við at leggja upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong> afturat tínum <strong>listum</strong>. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat.
other: Tú ert í ferð við at leggja upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong> afturat tínum <strong>listum</strong>. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat.
muting_html:
one: Tú ert í ferð við at <strong>doyva</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
other: Tú ert í ferð við at <strong>doyva</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
preface: Tú kanst innlesa dátur, sum tú hevur útlisið frá einum øðrum ambætara, so sum listar av fólki, sum tú fylgir ella blokerar.
recent_imports: Feskar innflytingar
states:

View file

@ -447,6 +447,7 @@ lv:
resolve: Atrisināt domēnu
not_permitted: Nav atļauta
resolved_through_html: Atrisināts, izmantojot %{domain}
title: Bloķētie e-pasta domēni
export_domain_allows:
new:
title: Importēt domēnu atļaujas
@ -872,6 +873,8 @@ lv:
message_html: Tu neesi definējis nevienu servera nosacījumu.
sidekiq_process_check:
message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju
software_version_check:
action: Skatīt pieejamos atjauninājumus
software_version_critical_check:
action: Skatīt pieejamos atjauninājumus
message_html: Ir pieejams kritisks Mastodon atjauninājums. Lūdzu, atjaunini to pēc iespējas ātrāk.
@ -1668,6 +1671,8 @@ lv:
webauthn_authentication: Drošības atslēgas
severed_relationships:
download: Lejupielādēt (%{count})
event_type:
user_domain_block: Jūs bloķējāt %{target_name}
lost_followers: Zaudētie sekotāji
lost_follows: Zaudētie sekojumi
type: Notikums

View file

@ -65,7 +65,7 @@ ru:
demote: Разжаловать
destroyed_msg: Данные %{username} поставлены в очередь на удаление
disable: Заморозка
disable_sign_in_token_auth: Отключите аутентификацию с помощью маркера электронной почты
disable_sign_in_token_auth: Отключить аутентификацию по e-mail кодам
disable_two_factor_authentication: Отключить 2FA
disabled: Отключено
display_name: Отображаемое имя
@ -74,7 +74,7 @@ ru:
email: E-mail
email_status: Статус e-mail
enable: Включить
enable_sign_in_token_auth: Включите аутентификацию с помощью маркера электронной почты
enable_sign_in_token_auth: Включить аутентификацию по e-mail кодам
enabled: Включен
enabled_msg: Учётная запись %{username} успешно разморожена
followers: Подписчики
@ -147,8 +147,8 @@ ru:
security_measures:
only_password: Только пароль
password_and_2fa: Пароль и 2FA
sensitive: Отметить как «деликатного содержания»
sensitized: отмечено как «деликатного характера»
sensitive: Деликатный
sensitized: отмечено как деликатный контент
shared_inbox_url: URL общих входящих
show:
created_reports: Жалобы, отправленные с этой учётной записи
@ -166,7 +166,7 @@ ru:
unblock_email: Разблокировать e-mail адрес
unblocked_email_msg: E-mail адрес %{username} разблокирован
unconfirmed_email: Неподтверждённый e-mail
undo_sensitized: Убрать отметку «деликатного содержания»
undo_sensitized: Снять отметку "деликатный"
undo_silenced: Отменить скрытие
undo_suspension: Снять блокировку
unsilenced_msg: Ограничения с учётной записи %{username} сняты успешно
@ -1316,7 +1316,7 @@ ru:
csv: CSV
domain_blocks: Доменные блокировки
lists: Списки
mutes: Ваши игнорируете
mutes: Ваши игнорируемые
storage: Ваши файлы
featured_tags:
add_new: Добавить
@ -1439,6 +1439,47 @@ ru:
many: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
one: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
other: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
lists_html:
few: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунта</strong>.
many: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунтов</strong>.
one: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будет добавлен <strong>%{count} аккаунт</strong>.
other: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунтов</strong>.
muting_html:
few: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
many: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
one: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
other: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
preambles:
blocking_html:
few: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
many: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
one: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
other: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
bookmarks_html:
few: Вы собираетесь добавить <strong>%{count} поста</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
many: Вы собираетесь добавить <strong>%{count} постов</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
one: Вы собираетесь добавить <strong>%{count} пост</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
other: Вы собираетесь добавить <strong>%{count} постов</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
domain_blocking_html:
few: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} домена</strong> из файла <strong>%{filename}</strong>.
many: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} доменов</strong> из файла <strong>%{filename}</strong>.
one: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} домен</strong> из файла <strong>%{filename}</strong>.
other: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} доменов</strong> из файла <strong>%{filename}</strong>.
following_html:
few: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
many: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
one: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
other: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
lists_html:
few: Вы собираетесь добавить <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
many: Вы собираетесь добавить <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
one: Вы собираетесь добавить <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
other: Вы собираетесь добавить <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
muting_html:
few: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
many: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
one: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
other: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла.
recent_imports: Недавно импортированное
states:
@ -1511,6 +1552,7 @@ ru:
unsubscribe:
action: Да, отписаться
complete: Подписка отменена
confirmation_html: Вы точно желаете отписаться от всех уведомления типа «%{type}», доставляемых из сервера Mastodon %{domain} на ваш адрес электронной почты %{email}? Вы всегда сможете подписаться снова в <a href="%{settings_path}">настройках e-mail уведомлений</a>.
emails:
notification_emails:
favourite: любимые электронные письма с уведомлениями

View file

@ -9,7 +9,6 @@ ar:
indexable: قد تظهر منشوراتك الموجهة للعامة في نتائج البحث على ماستدون. فالأشخاص الذين تفاعلوا مع منشوراتك قد يكون بمقدورهم البحث عنها بغظ النظر عن ذلك.
note: 'يمكنك @ذكر أشخاص آخرين أو استعمال #الوسوم.'
show_collections: سيستطيع الناس من تصفح متابعيك و متابعاتك. سيرى الأشخاص الذين تتبعهم أنك تتبعهم دون أي شك.
unlocked: سيتمكن الآخرون من متابعتك دون طلب الموافقة. قم بتعطيله إن كنت ترغب في مراجعة تلك الطلبات يدويا باختيار قبول أو رفض المتابعين الجدد.
account_alias:
acct: ادخِل عنون الحساب username@domain الذي تودّ مغادرته
account_migration:

View file

@ -4,7 +4,6 @@ ast:
hints:
account:
note: 'Pues @mentar a otros perfiles o poner #etiquetes.'
unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales.
admin_account_action:
text_html: Opcional. Pues usar la sintaxis de los artículos y amestar <a href="%{path}">alvertencies preconfiguraes</a> p'aforrar tiempu
type_html: Escueyi qué facer con <strong>%{acct}</strong>

View file

@ -9,7 +9,6 @@ be:
indexable: Вашыя публічныя допісы могуць з'яўляцца ў рэзультатах пошуку Mastodon. Людзі, якія ўзаемадзейнічалі з вашымі допісамі, усё роўна маюць магчымасць іх знаходзіць.
note: 'Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі.'
show_collections: Людзі змогуць праглядаць спіс вашых падпісак і падпісчыкаў. Людзі, на якіх вы падпісаны ў любым выпадку будуць бачыць, што вы іх чытаеце.
unlocked: Людзі змогуць сачыць за вамі, не запытваючы пацвярджэння. Зніміце сцяжок, калі вы хочаце праглядаць запыты на падпіску і выбіраць, прымаць ці адхіляць новых падпісчыкаў.
account_alias:
acct: Прызначце карыстальнік@дамен уліковага запісу з якога вы хочаце пераехаць
account_migration:

View file

@ -9,7 +9,6 @@ bg:
indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо.
note: 'Може да @споменавате други хора или #хаштагове.'
show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това.
unlocked: Хората ще могат да ви последват без изискване на одобрение. Размаркирайте, ако искате да преглеждате заявките за последване и изберете дали да приемете или отхвърлите новите последователи.
account_alias:
acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите
account_migration:

View file

@ -9,7 +9,7 @@ ca:
indexable: Els teus tuts públics poden aparèixer en els resultats de cerca de Mastodon. Les persones que han interaccionat amb el teus tuts seran sempre capaços de cercar-los.
note: 'Pots @mencionar altra gent o #etiquetes.'
show_collections: La gent podrà navegar pels teus seguits i seguidors. Qui segueixis sí que veurà que els segueixes.
unlocked: La gent serà capaç de seguir-te sense sol·licitar-ho. Desmarca si vols revisar les sol·licituds i triar si acceptes o no els nous seguidors.
unlocked: Us podran seguir sense la vostra aprovació. Desmarqueu si voleu moderar les peticions de seguiment i decidir quines autoritzeu o denegueu.
account_alias:
acct: Especifica l'usuari@domini del compte des d'on et vols traslladar
account_migration:

View file

@ -9,7 +9,6 @@ cs:
indexable: Vaše veřejné příspěvky se mohou objevit ve výsledcích vyhledávání na Mastodonu. Lidé, kteří s vašimi příspěvky interagovaly, je mohou stále vyhledávat.
note: 'Můžete @zmínit jiné osoby nebo #hashtagy.'
show_collections: Lidé budou moci procházet skrz sledující. Lidé, které sledujete, uvidí, že je sledujete bezohledně.
unlocked: Lidé vás budou moci sledovat, aniž by vás žádali o schválení. Zrušte zaškrtnutí, pokud chcete zkontrolovat požadavky a zvolte, zda přijmete nebo odmítněte nové následovníky.
account_alias:
acct: Zadejte svůj účet, ze kterého se chcete přesunout jinam, ve formátu přezdívka@doména
account_migration:

View file

@ -10,7 +10,6 @@ cy:
indexable: Mae'n bosib y bydd eich postiadau cyhoeddus yn ymddangos yng nghanlyniadau chwilio ar Mastodon. Mae'n bosibl y bydd pobl sydd wedi rhyngweithio â'ch postiadau yn dal i allu eu chwilio.
note: 'Gallwch @grybwyll pobl eraill neu #hashnodau.'
show_collections: Bydd pobl yn gallu pori trwy'r rhai rydych yn eu dilyn a'ch dilynwyr. Bydd y bobl rydych chi'n eu dilyn yn gweld eich bod chi'n eu dilyn beth bynnag.
unlocked: Bydd pobl yn gallu eich dilyn heb ofyn am ganiatâd. Dad-diciwch os ydych am adolygu ceisiadau dilyn a dewis a ydych am dderbyn neu wrthod dilynwyr newydd.
account_alias:
acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono
account_migration:

View file

@ -10,7 +10,7 @@ da:
indexable: Dine offentlige indlæg vil kunne vises i Mastodon-søgeresultater. Folk, som har interageret med dem, vil kunne finde dem uanset.
note: 'Du kan @omtale andre personer eller #hashtags.'
show_collections: Folk vil ikke kunne tjekke dine Følger og Følgere. Folk, du selv følger, vil stadig kunne se dette.
unlocked: Folk vil kunne følge dig uden krav om godkendelse. Fjern markeringen, såfremt du ønsker at tjekke Følg-anmodninger og individuelt acceptere eller afvise nye Følgere.
unlocked: Man vil kunne følges af folk uden først at godkende dem. Ønsker man at gennemgå Følg-anmodninger og individuelt acceptere/afvise nye følgere, så fjern markeringen.
account_alias:
acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte
account_migration:

View file

@ -9,7 +9,6 @@ el:
indexable: Οι δημόσιες δημοσιεύσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις δημοσιεύσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει.
note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.'
show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει.
unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να αξιολογείς τα αιτήματα ακολούθησης και να επιλέξεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους.
account_alias:
acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς
account_migration:

View file

@ -9,7 +9,6 @@ en-GB:
indexable: Your public posts may appear in search results on Mastodon. People who have interacted with your posts may be able to search them regardless.
note: 'You can @mention other people or #hashtags.'
show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless.
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers.
account_alias:
acct: Specify the username@domain of the account you want to move from
account_migration:

View file

@ -12,7 +12,7 @@ en:
locked: People will request to follow you and you will be able to either accept or reject new followers.
note: 'You can @mention other people or #hashtags.'
show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless.
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers.
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and choose whether to accept or reject new followers.
account_alias:
acct: Specify the username@domain of the account you want to move from
account_migration:

View file

@ -10,7 +10,7 @@ eo:
indexable: Viaj publikaj afiŝoj povas aperi en serĉrezultoj ĉe Mastodon. Homoj, kiuj interagis kun viaj afiŝoj, eble povos serĉi ilin sendepende.
note: 'Vi povas @mencii aliajn homojn aŭ #haŝetikedoj.'
show_collections: Homoj povos foliumi viajn sekvatojn kaj sekvantojn. Homoj, kiujn vi sekvas, vidos, ke vi sekvas ilin ĉiaokaze.
unlocked: Homoj povos sekvi vin sen peto de aprobo. Malelektu se vi volas kontroli petojn de sekvado kaj elekti, ĉu akcepti aŭ malakcepti novajn sekvantojn.
unlocked: Homoj povos sekvi vin sen peti aprobon. Malmarku ĉu vi volas revizii sekvajn petojn kaj elektu ĉu akcepti aŭ malakcepti novajn sekvantojn.
account_alias:
acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi
account_migration:

View file

@ -10,7 +10,7 @@ es-AR:
indexable: Tus mensajes públicos pueden aparecer en los resultados de la búsqueda en Mastodon. La gente que interactuó con tus mensajes puede ser capaz de buscarlos sin importar el momento.
note: 'Podés @mencionar otras cuentas o usar #etiquetas.'
show_collections: La gente podrá navegar a través de tus seguidos y seguidores. Sin embargo, la gente que sigás, sabrá que lo estás haciendo.
unlocked: La gente podrá seguirte sin solicitar aprobación. Desmarcá si querés revisar las solicitudes de seguimiento y elegir si aceptar o rechazar nuevos seguidores.
unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores.
account_alias:
acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte
account_migration:

View file

@ -10,7 +10,7 @@ es-MX:
indexable: Tus publicaciones públicas pueden aparecer en los resultados de búsqueda en Mastodon. Las personas que han interactuado con tus publicaciones pueden buscarlas en cualquier momento.
note: 'Puedes @mencionar a otra gente o #hashtags.'
show_collections: Las personas pueden navegar a través de tus seguidos y seguidores. Las personas que te siguen pueden ver que las sigues.
unlocked: Las personas pueden seguirte sin solicitar la aprobación. No lo selecciones si quieres revisar las solicitudes de seguimiento y elegir si aceptas o rechazas a nuevos seguidores.
unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores.
account_alias:
acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar
account_migration:

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