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

View file

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

View file

@ -3,6 +3,6 @@
# Add your own tasks in files placed in lib/tasks ending in .rake, # 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. # 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 Rails.application.load_tasks

View file

@ -5,7 +5,7 @@ module Admin
def index def index
authorize :email_domain_block, :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 @form = Form::EmailDomainBlockBatch.new
end end

View file

@ -32,7 +32,7 @@ module Admin
def deactivate_all def deactivate_all
authorize :invite, :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 redirect_to admin_invites_path
end end

View file

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

View file

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

View file

@ -18,6 +18,6 @@ module RegistrationHelper
end end
def ip_blocked?(remote_ip) 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
end end

View file

@ -7,16 +7,17 @@ export const MostUsedHashtag: React.FC<{
}> = ({ data }) => { }> = ({ data }) => {
const hashtag = data[0]; const hashtag = data[0];
if (!hashtag) {
return (
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag' />
);
}
return ( return (
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag'> <div className='annual-report__bento__box annual-report__summary__most-used-hashtag'>
<div className='annual-report__summary__most-used-hashtag__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>
<div className='annual-report__summary__most-used-hashtag__label'> <div className='annual-report__summary__most-used-hashtag__label'>
<FormattedMessage <FormattedMessage

View file

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

View file

@ -68,7 +68,7 @@ class FollowRequests extends ImmutablePureComponent {
); );
return ( 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 <ScrollableList
scrollKey='follow_requests' scrollKey='follow_requests'
onLoadMore={this.handleLoadMore} onLoadMore={this.handleLoadMore}

View file

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

View file

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

View file

@ -87,11 +87,29 @@
"alert.unexpected.title": "Wps!", "alert.unexpected.title": "Wps!",
"alt_text_badge.title": "Testun Amgen", "alt_text_badge.title": "Testun Amgen",
"announcement.announcement": "Cyhoeddiad", "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)", "attachments_list.unprocessed": "(heb eu prosesu)",
"audio.hide": "Cuddio sain", "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.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_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_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_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.", "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.switch_to_single": "Newid pleidlais i gyfyngu i un dewis",
"compose_form.poll.type": "Arddull", "compose_form.poll.type": "Arddull",
"compose_form.publish": "Postiad", "compose_form.publish": "Postiad",
"compose_form.publish_form": "Cyhoeddi", "compose_form.publish_form": "Postiad newydd",
"compose_form.reply": "Ateb", "compose_form.reply": "Ateb",
"compose_form.save_changes": "Diweddariad", "compose_form.save_changes": "Diweddaru",
"compose_form.spoiler.marked": "Dileu rhybudd cynnwys", "compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
"compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys", "compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
"compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)", "compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "Adroddodd {name} {target}", "notification.admin.report_statuses_other": "Adroddodd {name} {target}",
"notification.admin.sign_up": "Cofrestrodd {name}", "notification.admin.sign_up": "Cofrestrodd {name}",
"notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}", "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": "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.favourite.name_and_others_with_link": "Ffafriodd {name} a <a>{count, plural, one {# arall} other {# arall}}</a> eich postiad",
"notification.follow": "Dilynodd {name} chi", "notification.follow": "Dilynodd {name} chi",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alt text", "alt_text_badge.title": "Alt text",
"announcement.announcement": "Bekendtgørelse", "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)", "attachments_list.unprocessed": "(ubehandlet)",
"audio.hide": "Skjul lyd", "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.", "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.duration": "Afstemningens varighed",
"compose_form.poll.multiple": "Multivalg", "compose_form.poll.multiple": "Multivalg",
"compose_form.poll.option_placeholder": "Valgmulighed {number}", "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_multiple": "Ændr afstemning til flervalgstype",
"compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype",
"compose_form.poll.type": "Stil", "compose_form.poll.type": "Stil",
@ -507,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} anmeldte {target}", "notification.admin.report_statuses_other": "{name} anmeldte {target}",
"notification.admin.sign_up": "{name} tilmeldte sig", "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.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} 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.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", "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": "{name} meldete {target} wegen {category}",
"notification.admin.report_statuses_other": "{name} meldete {target}", "notification.admin.report_statuses_other": "{name} meldete {target}",
"notification.admin.sign_up": "{name} registrierte sich", "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.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!",
"notification.annual_report.view": "#Wrapstodon ansehen", "notification.annual_report.view": "#Wrapstodon ansehen",
"notification.favourite": "{name} favorisierte deinen Beitrag", "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} 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} 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.mention": "Erwähnung",
"notification.label.private_mention": "Private Erwähnung", "notification.label.private_mention": "Private Erwähnung",
"notification.label.private_reply": "Private Antwort", "notification.label.private_reply": "Private Antwort",
@ -552,7 +552,7 @@
"notification.own_poll": "Deine Umfrage ist beendet", "notification.own_poll": "Deine Umfrage ist beendet",
"notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet",
"notification.reblog": "{name} teilte deinen Beitrag", "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": "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.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.", "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": "Ουπς!", "alert.unexpected.title": "Ουπς!",
"alt_text_badge.title": "Εναλλακτικό κείμενο", "alt_text_badge.title": "Εναλλακτικό κείμενο",
"announcement.announcement": "Ανακοίνωση", "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": "(μη επεξεργασμένο)", "attachments_list.unprocessed": "(μη επεξεργασμένο)",
"audio.hide": "Απόκρυψη αρχείου ήχου", "audio.hide": "Απόκρυψη αρχείου ήχου",
"block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.", "block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.",
@ -158,6 +176,7 @@
"compose_form.poll.duration": "Διάρκεια δημοσκόπησης", "compose_form.poll.duration": "Διάρκεια δημοσκόπησης",
"compose_form.poll.multiple": "Πολλαπλή επιλογή", "compose_form.poll.multiple": "Πολλαπλή επιλογή",
"compose_form.poll.option_placeholder": "Επιλογή {number}", "compose_form.poll.option_placeholder": "Επιλογή {number}",
"compose_form.poll.single": "Μονή επιλογή",
"compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές", "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές",
"compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή",
"compose_form.poll.type": "Στυλ", "compose_form.poll.type": "Στυλ",
@ -196,6 +215,7 @@
"confirmations.unfollow.title": "Άρση ακολούθησης;", "confirmations.unfollow.title": "Άρση ακολούθησης;",
"content_warning.hide": "Απόκρυψη ανάρτησης", "content_warning.hide": "Απόκρυψη ανάρτησης",
"content_warning.show": "Εμφάνιση ούτως ή άλλως", "content_warning.show": "Εμφάνιση ούτως ή άλλως",
"content_warning.show_more": "Εμφάνιση περισσότερων",
"conversation.delete": "Διαγραφή συζήτησης", "conversation.delete": "Διαγραφή συζήτησης",
"conversation.mark_as_read": "Σήμανση ως αναγνωσμένο", "conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
"conversation.open": "Προβολή συνομιλίας", "conversation.open": "Προβολή συνομιλίας",
@ -304,6 +324,7 @@
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα", "filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
"filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης", "filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης",
"filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης", "filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης",
"filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “<span>{title}</span>”",
"filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις", "filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις",
"filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις", "filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις",
"firehose.all": "Όλα", "firehose.all": "Όλα",
@ -383,9 +404,10 @@
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.", "interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.",
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.", "interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.",
"interaction_modal.description.reply": "Με ένα λογαριασμό 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.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_another_server": "Σε διαφορετικό διακομιστή",
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
"interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;", "interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;",
@ -394,6 +416,7 @@
"interaction_modal.title.follow": "Ακολούθησε {name}", "interaction_modal.title.follow": "Ακολούθησε {name}",
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}", "interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}", "interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
"interaction_modal.title.vote": "Ψήφισε στη δημοσκόπηση του χρήστη {name}",
"intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}", "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
"intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}", "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}", "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
@ -503,9 +526,12 @@
"notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}", "notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}",
"notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.admin.sign_up": "{name} έχει εγγραφεί",
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί", "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} favorited your post\n{name} προτίμησε την ανάρτηση σου",
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου", "notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow": "Ο/Η {name} σε ακολούθησε",
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> σε ακολούθησαν",
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν", "notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
"notification.label.mention": "Επισήμανση", "notification.label.mention": "Επισήμανση",
@ -513,6 +539,7 @@
"notification.label.private_reply": "Ιδιωτική απάντηση", "notification.label.private_reply": "Ιδιωτική απάντηση",
"notification.label.reply": "Απάντηση", "notification.label.reply": "Απάντηση",
"notification.mention": "Επισήμανση", "notification.mention": "Επισήμανση",
"notification.mentioned_you": "Ο χρήστης {name} σε επισήμανε",
"notification.moderation-warning.learn_more": "Μάθε περισσότερα", "notification.moderation-warning.learn_more": "Μάθε περισσότερα",
"notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού", "notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού",
"notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.", "notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.",
@ -563,6 +590,7 @@
"notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου", "notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου",
"notifications.column_settings.follow": "Νέοι ακόλουθοι:", "notifications.column_settings.follow": "Νέοι ακόλουθοι:",
"notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:", "notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:",
"notifications.column_settings.group": "Ομάδα",
"notifications.column_settings.mention": "Επισημάνσεις:", "notifications.column_settings.mention": "Επισημάνσεις:",
"notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:", "notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:",
"notifications.column_settings.push": "Ειδοποιήσεις Push", "notifications.column_settings.push": "Ειδοποιήσεις Push",

View file

@ -114,6 +114,7 @@
"annual_report.summary.highlighted_post.possessive": "{name}'s", "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_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.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.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.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.", "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",

View file

@ -87,6 +87,9 @@
"alert.unexpected.title": "Aj!", "alert.unexpected.title": "Aj!",
"alt_text_badge.title": "Alt-teksto", "alt_text_badge.title": "Alt-teksto",
"announcement.announcement": "Anonco", "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.new_posts.new_posts": "novaj afiŝoj",
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
"attachments_list.unprocessed": "(neprilaborita)", "attachments_list.unprocessed": "(neprilaborita)",
@ -510,6 +513,7 @@
"notification.admin.report_statuses_other": "{name} raportis {target}", "notification.admin.report_statuses_other": "{name} raportis {target}",
"notification.admin.sign_up": "{name} kreis konton", "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.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} 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.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", "notification.follow": "{name} eksekvis vin",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Epa!", "alert.unexpected.title": "¡Epa!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio", "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.followers.followers": "seguidores",
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", "annual_report.summary.followers.total": "{count} en total",
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", "annual_report.summary.here_it_is": "Acá está tu resumen de {year}:",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.by_favourites": "el mensaje más veces marcado como favorito",
"annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.highlighted_post.by_reblogs": "el mensaje que más adhesiones recibió",
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.highlighted_post.by_replies": "el mensaje que más respuestas recibió",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", "annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones", "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!", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "[sin procesar]", "attachments_list.unprocessed": "[sin procesar]",
"audio.hide": "Ocultar audio", "audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} denunció a {target}", "notification.admin.report_statuses_other": "{name} denunció a {target}",
"notification.admin.sign_up": "Se registró {name}", "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.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} 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.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", "notification.follow": "{name} te empezó a seguir",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Ups!", "alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio", "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.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.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_reblogs": "publicación más impulsada",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
"annual_report.summary.highlighted_post.possessive": "de {name}", "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_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.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones", "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!", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "(sin procesar)", "attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio", "audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} reportó {target}", "notification.admin.report_statuses_other": "{name} reportó {target}",
"notification.admin.sign_up": "{name} se unio", "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.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} 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.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", "notification.follow": "{name} te empezó a seguir",

View file

@ -87,14 +87,23 @@
"alert.unexpected.title": "¡Ups!", "alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"announcement.announcement": "Anuncio", "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.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.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_reblogs": "publicación más impulsada",
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
"annual_report.summary.highlighted_post.possessive": "de {name}", "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_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.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones", "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!", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
"attachments_list.unprocessed": "(sin procesar)", "attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio", "audio.hide": "Ocultar audio",
@ -517,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.report_statuses_other": "{name} informó de {target}",
"notification.admin.sign_up": "{name} se registró", "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.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} 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.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", "notification.follow": "{name} te empezó a seguir",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Annar tekstur", "alt_text_badge.title": "Annar tekstur",
"announcement.announcement": "Kunngerð", "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)", "attachments_list.unprocessed": "(óviðgjørt)",
"audio.hide": "Fjal ljóð", "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.", "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.report_statuses_other": "{name} meldaði {target}",
"notification.admin.sign_up": "{name} meldaði seg til", "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.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} 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.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", "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_app.most_used_app": "app que mais usaches",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado", "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.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)", "attachments_list.unprocessed": "(sen procesar)",
"audio.hide": "Agochar audio", "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.", "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": "אופס!", "alert.unexpected.title": "אופס!",
"alt_text_badge.title": "כיתוב חלופי", "alt_text_badge.title": "כיתוב חלופי",
"announcement.announcement": "הכרזה", "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": "(לא מעובד)", "attachments_list.unprocessed": "(לא מעובד)",
"audio.hide": "השתק", "audio.hide": "השתק",
"block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.", "block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} דיווח.ה על {target}", "notification.admin.report_statuses_other": "{name} דיווח.ה על {target}",
"notification.admin.sign_up": "{name} נרשמו", "notification.admin.sign_up": "{name} נרשמו",
"notification.admin.sign_up.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} נרשמו", "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}",
"notification.favourite.name_and_others_with_link": "{name} ועוד <a>{count, plural,one {אחד נוסף}other {# נוספים}}</a> חיבבו את הודעתך", "notification.favourite.name_and_others_with_link": "{name} ועוד <a>{count, plural,one {אחד נוסף}other {# נוספים}}</a> חיבבו את הודעתך",
"notification.follow": "{name} במעקב אחרייך", "notification.follow": "{name} במעקב אחרייך",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Hoppá!", "alert.unexpected.title": "Hoppá!",
"alt_text_badge.title": "Helyettesítő szöveg", "alt_text_badge.title": "Helyettesítő szöveg",
"announcement.announcement": "Közlemény", "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)", "attachments_list.unprocessed": "(feldolgozatlan)",
"audio.hide": "Hang elrejtése", "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.", "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.report_statuses_other": "{name} jelentette: {target}",
"notification.admin.sign_up": "{name} regisztrált", "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.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} 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.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", "notification.follow": "{name} követ téged",

View file

@ -87,6 +87,20 @@
"alert.unexpected.title": "Oops!", "alert.unexpected.title": "Oops!",
"alt_text_badge.title": "Testo alternativo", "alt_text_badge.title": "Testo alternativo",
"announcement.announcement": "Annuncio", "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)", "attachments_list.unprocessed": "(non elaborato)",
"audio.hide": "Nascondi audio", "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.", "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.report_statuses_other": "{name} ha segnalato {target}",
"notification.admin.sign_up": "{name} si è iscritto", "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.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} 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.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", "notification.follow": "{name} ha iniziato a seguirti",

View file

@ -99,6 +99,24 @@
"alert.unexpected.title": "エラー!", "alert.unexpected.title": "エラー!",
"alt_text_badge.title": "代替テキスト", "alt_text_badge.title": "代替テキスト",
"announcement.announcement": "お知らせ", "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.add": "アンテナに追加",
"antennas.account.remove": "アンテナから外す", "antennas.account.remove": "アンテナから外す",
"antennas.accounts": "{count} のアカウント", "antennas.accounts": "{count} のアカウント",
@ -612,6 +630,8 @@
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました", "notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
"notification.admin.sign_up": "{name}さんがサインアップしました", "notification.admin.sign_up": "{name}さんがサインアップしました",
"notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました", "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}さんがあなたの投稿に絵文字をつけました",
"notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました", "notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました",
"notification.favourite": "{name}さんがお気に入りしました", "notification.favourite": "{name}さんがお気に入りしました",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "앗!", "alert.unexpected.title": "앗!",
"alt_text_badge.title": "대체 문구", "alt_text_badge.title": "대체 문구",
"announcement.announcement": "공지사항", "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": "(처리 안 됨)", "attachments_list.unprocessed": "(처리 안 됨)",
"audio.hide": "소리 숨기기", "audio.hide": "소리 숨기기",
"block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.", "block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다", "notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다",
"notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다",
"notification.admin.sign_up.name_and_others": "{name} 외 {count, plural, other {# 명}}이 가입했습니다", "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} 님이 내 게시물을 좋아합니다",
"notification.favourite.name_and_others_with_link": "{name} 외 <a>{count, plural, other {# 명}}</a>이 내 게시물을 좋아합니다", "notification.favourite.name_and_others_with_link": "{name} 외 <a>{count, plural, other {# 명}}</a>이 내 게시물을 좋아합니다",
"notification.follow": "{name} 님이 나를 팔로우했습니다", "notification.follow": "{name} 님이 나를 팔로우했습니다",

View file

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

View file

@ -87,11 +87,21 @@
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alternatívny popis", "alt_text_badge.title": "Alternatívny popis",
"announcement.announcement": "Oznámenie", "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é)", "attachments_list.unprocessed": "(nespracované)",
"audio.hide": "Skryť zvuk", "audio.hide": "Skryť zvuk",
"block_modal.show_less": "Zobraziť menej", "block_modal.show_less": "Zobraziť menej",
"block_modal.show_more": "Zobraziť viac", "block_modal.show_more": "Zobraziť viac",
"block_modal.they_cant_mention": "Nemôžu ťa spomenúť, alebo nasledovať.", "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.they_will_know": "Môžu vidieť, že sú zablokovaní/ý.",
"block_modal.title": "Blokovať užívateľa?", "block_modal.title": "Blokovať užívateľa?",
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.", "block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
@ -338,6 +348,7 @@
"hashtag.follow": "Sledovať hashtag", "hashtag.follow": "Sledovať hashtag",
"hashtag.unfollow": "Prestať sledovať hashtag", "hashtag.unfollow": "Prestať sledovať hashtag",
"hashtags.and_other": "…a {count, plural, other {# ďalších}}", "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_reblogs": "Zobraziť zdieľania",
"home.column_settings.show_replies": "Zobraziť odpovede", "home.column_settings.show_replies": "Zobraziť odpovede",
"home.hide_announcements": "Skryť oznámenia", "home.hide_announcements": "Skryť oznámenia",
@ -345,6 +356,9 @@
"home.pending_critical_update.link": "Zobraziť aktualizácie", "home.pending_critical_update.link": "Zobraziť aktualizácie",
"home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.", "home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.",
"home.show_announcements": "Zobraziť oznámenia", "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", "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.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.", "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.follow": "Sledovať {name}",
"interaction_modal.title.reblog": "Zdieľať príspevok od {name}", "interaction_modal.title.reblog": "Zdieľať príspevok od {name}",
"interaction_modal.title.reply": "Odpovedať na 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.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.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}}", "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.close": "Zatvoriť",
"lightbox.next": "Ďalej", "lightbox.next": "Ďalej",
"lightbox.previous": "Späť", "lightbox.previous": "Späť",
"lightbox.zoom_out": "Priblížiť na mieru",
"limited_account_hint.action": "Aj tak zobraziť profil", "limited_account_hint.action": "Aj tak zobraziť profil",
"limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.", "limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.",
"link_preview.author": "Autor: {name}", "link_preview.author": "Autor: {name}",
@ -428,7 +444,11 @@
"mute_modal.hide_options": "Skryť možnosti", "mute_modal.hide_options": "Skryť možnosti",
"mute_modal.indefinite": "Pokiaľ ich neodtíšim", "mute_modal.indefinite": "Pokiaľ ich neodtíšim",
"mute_modal.show_options": "Zobraziť možnosti", "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.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.about": "O tomto serveri",
"navigation_bar.administration": "Spravovanie", "navigation_bar.administration": "Spravovanie",
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní", "navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
@ -468,12 +488,15 @@
"notification.label.private_reply": "Súkromná odpoveď", "notification.label.private_reply": "Súkromná odpoveď",
"notification.label.reply": "Odpoveď", "notification.label.reply": "Odpoveď",
"notification.mention": "Zmienka", "notification.mention": "Zmienka",
"notification.mentioned_you": "{name} ťa spomenul/a",
"notification.moderation-warning.learn_more": "Zisti viac", "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_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.",
"notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.", "notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.",
"notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.", "notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.",
"notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.", "notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.",
"notification.own_poll": "Vaša anketa sa skončila", "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.reblog": "{name} zdieľa váš príspevok",
"notification.relationships_severance_event": "Stratené prepojenia s {name}", "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ť.", "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": "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_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.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.drop": "Ignoruj",
"notifications.policy.filter": "Triediť", "notifications.policy.filter": "Triediť",
"notifications.policy.filter_limited_accounts_title": "Moderované účty", "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_followers_title": "Ľudia, ktorí ťa nenasledujú",
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ", "notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
"notifications.policy.filter_private_mentions_title": "Nevyžiadané priame spomenutia", "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.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.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ť", "notifications_permission_banner.title": "Nenechajte si nič ujsť",
@ -697,6 +723,7 @@
"status.bookmark": "Pridať záložku", "status.bookmark": "Pridať záložku",
"status.cancel_reblog_private": "Zrušiť zdieľanie", "status.cancel_reblog_private": "Zrušiť zdieľanie",
"status.cannot_reblog": "Tento príspevok nie je možné zdieľať", "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.copy": "Kopírovať odkaz na príspevok",
"status.delete": "Vymazať", "status.delete": "Vymazať",
"status.detailed_status": "Podrobný náhľad celej konverzácie", "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} 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.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} 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} 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.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", "notification.label.mention": "Përmendje",
@ -584,6 +585,7 @@
"notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta",
"notifications.column_settings.follow": "Ndjekës të rinj:", "notifications.column_settings.follow": "Ndjekës të rinj:",
"notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:", "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.mention": "Përmendje:",
"notifications.column_settings.poll": "Përfundime pyetësori:", "notifications.column_settings.poll": "Përfundime pyetësori:",
"notifications.column_settings.push": "Njoftime Push", "notifications.column_settings.push": "Njoftime Push",

View file

@ -87,10 +87,22 @@
"alert.unexpected.title": "Hoppsan!", "alert.unexpected.title": "Hoppsan!",
"alt_text_badge.title": "Alt-Text", "alt_text_badge.title": "Alt-Text",
"announcement.announcement": "Meddelande", "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.followers": "följare",
"annual_report.summary.followers.total": "{count} totalt", "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.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.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.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!", "annual_report.summary.thanks": "Tack för att du är en del av Mastodon!",
"attachments_list.unprocessed": "(obehandlad)", "attachments_list.unprocessed": "(obehandlad)",
@ -412,7 +424,7 @@
"keyboard_shortcuts.blocked": "Öppna listan över blockerade användare", "keyboard_shortcuts.blocked": "Öppna listan över blockerade användare",
"keyboard_shortcuts.boost": "Boosta inlägg", "keyboard_shortcuts.boost": "Boosta inlägg",
"keyboard_shortcuts.column": "Fokusera kolumn", "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.description": "Beskrivning",
"keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen", "keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen",
"keyboard_shortcuts.down": "Flytta ner i listan", "keyboard_shortcuts.down": "Flytta ner i listan",
@ -421,20 +433,20 @@
"keyboard_shortcuts.favourites": "Öppna favoritlistan", "keyboard_shortcuts.favourites": "Öppna favoritlistan",
"keyboard_shortcuts.federated": "Öppna federerad tidslinje", "keyboard_shortcuts.federated": "Öppna federerad tidslinje",
"keyboard_shortcuts.heading": "Tangentbordsgenvägar", "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.hotkey": "Kommando",
"keyboard_shortcuts.legend": "för att visa denna översikt", "keyboard_shortcuts.legend": "Visa denna översikt",
"keyboard_shortcuts.local": "för att öppna Lokal tidslinje", "keyboard_shortcuts.local": "Öppna lokal tidslinje",
"keyboard_shortcuts.mention": "för att nämna skaparen", "keyboard_shortcuts.mention": "Nämna skaparen",
"keyboard_shortcuts.muted": "Öppna listan över tystade användare", "keyboard_shortcuts.muted": "Öppna listan över tystade användare",
"keyboard_shortcuts.my_profile": "för att öppna din profil", "keyboard_shortcuts.my_profile": "Öppna din profil",
"keyboard_shortcuts.notifications": "för att öppna Meddelanden", "keyboard_shortcuts.notifications": "Öppna meddelanden",
"keyboard_shortcuts.open_media": "öppna media", "keyboard_shortcuts.open_media": "Öppna media",
"keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg", "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.reply": "Svara på inlägg",
"keyboard_shortcuts.requests": "för att öppna Följförfrågningar", "keyboard_shortcuts.requests": "Öppna följförfrågningar",
"keyboard_shortcuts.search": "för att fokusera sökfältet", "keyboard_shortcuts.search": "Fokusera sökfältet",
"keyboard_shortcuts.spoilers": "Visa/dölja CW-fält", "keyboard_shortcuts.spoilers": "Visa/dölja CW-fält",
"keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen", "keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen",
"keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW", "keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW",
@ -514,6 +526,7 @@
"notification.admin.report_statuses_other": "{name} rapporterade {target}", "notification.admin.report_statuses_other": "{name} rapporterade {target}",
"notification.admin.sign_up": "{name} registrerade sig", "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.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.annual_report.view": "Visa #Wrapstodon",
"notification.favourite": "{name} favoritmarkerade ditt inlägg", "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", "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": "อุปส์!", "alert.unexpected.title": "อุปส์!",
"alt_text_badge.title": "ข้อความแสดงแทน", "alt_text_badge.title": "ข้อความแสดงแทน",
"announcement.announcement": "ประกาศ", "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": "(ยังไม่ได้ประมวลผล)", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)",
"audio.hide": "ซ่อนเสียง", "audio.hide": "ซ่อนเสียง",
"block_modal.remote_users_caveat": "เราจะขอให้เซิร์ฟเวอร์ {domain} เคารพการตัดสินใจของคุณ อย่างไรก็ตาม ไม่รับประกันการปฏิบัติตามข้อกำหนดเนื่องจากเซิร์ฟเวอร์บางแห่งอาจจัดการการปิดกั้นแตกต่างกัน โพสต์สาธารณะอาจยังคงปรากฏแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบ", "block_modal.remote_users_caveat": "เราจะขอให้เซิร์ฟเวอร์ {domain} เคารพการตัดสินใจของคุณ อย่างไรก็ตาม ไม่รับประกันการปฏิบัติตามข้อกำหนดเนื่องจากเซิร์ฟเวอร์บางแห่งอาจจัดการการปิดกั้นแตกต่างกัน โพสต์สาธารณะอาจยังคงปรากฏแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบ",
@ -508,6 +515,7 @@
"notification.admin.report_statuses_other": "{name} ได้รายงาน {target}", "notification.admin.report_statuses_other": "{name} ได้รายงาน {target}",
"notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.admin.sign_up": "{name} ได้ลงทะเบียน",
"notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน", "notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน",
"notification.annual_report.view": "ดู #Wrapstodon",
"notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
"notification.favourite.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ชื่นชอบโพสต์ของคุณ", "notification.favourite.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ชื่นชอบโพสต์ของคุณ",
"notification.follow": "{name} ได้ติดตามคุณ", "notification.follow": "{name} ได้ติดตามคุณ",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Hay aksi!", "alert.unexpected.title": "Hay aksi!",
"alt_text_badge.title": "Alternatif metin", "alt_text_badge.title": "Alternatif metin",
"announcement.announcement": "Duyuru", "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ş)", "attachments_list.unprocessed": "(işlenmemiş)",
"audio.hide": "Sesi gizle", "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.", "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.report_statuses_other": "{name}, {target} kişisini bildirdi",
"notification.admin.sign_up": "{name} kaydoldu", "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.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} 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.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", "notification.follow": "{name} seni takip etti",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ой!", "alert.unexpected.title": "Ой!",
"alt_text_badge.title": "Альтернативний текст", "alt_text_badge.title": "Альтернативний текст",
"announcement.announcement": "Оголошення", "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": "(не оброблено)", "attachments_list.unprocessed": "(не оброблено)",
"audio.hide": "Сховати аудіо", "audio.hide": "Сховати аудіо",
"block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.", "block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.",
@ -508,6 +526,8 @@
"notification.admin.report_statuses_other": "{name} повідомляє про {target}", "notification.admin.report_statuses_other": "{name} повідомляє про {target}",
"notification.admin.sign_up": "{name} приєдналися", "notification.admin.sign_up": "{name} приєдналися",
"notification.admin.sign_up.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} зареєструвалися", "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}",
"notification.favourite.name_and_others_with_link": "{name} та <a>{count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}</a> вподобали ваш допис", "notification.favourite.name_and_others_with_link": "{name} та <a>{count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}</a> вподобали ваш допис",
"notification.follow": "{name} підписалися на вас", "notification.follow": "{name} підписалися на вас",

View file

@ -87,6 +87,24 @@
"alert.unexpected.title": "Ốiii!", "alert.unexpected.title": "Ốiii!",
"alt_text_badge.title": "Văn bản thay thế", "alt_text_badge.title": "Văn bản thay thế",
"announcement.announcement": "Có gì mới?", "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í)", "attachments_list.unprocessed": "(chưa xử lí)",
"audio.hide": "Ẩn âm thanh", "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.", "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.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} 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.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} 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.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", "notification.follow": "{name} theo dõi bạn",

View file

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

View file

@ -535,3 +535,10 @@ a.sparkline {
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
opacity: 0.25; 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); background-color: var(--goldenrod-2);
} }
} }
.status-card,
.hashtag-bar {
display: none;
}
} }
&__followers { &__followers {
@ -237,7 +242,7 @@
} }
&__number { &__number {
font-size: 61px; font-size: 54px;
font-weight: 600; font-weight: 600;
line-height: 73px; line-height: 73px;
color: var(--goldenrod-2); color: var(--goldenrod-2);
@ -306,7 +311,7 @@
} }
.annual-report-modal { .annual-report-modal {
max-width: 480px; max-width: 600px;
background: var(--indigo-1); background: var(--indigo-1);
border-radius: 16px; border-radius: 16px;
display: flex; display: flex;

View file

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

View file

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

View file

@ -334,14 +334,10 @@ class Request
def check_private_address(address, host) def check_private_address(address, host)
addr = IPAddr.new(address.to_s) 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) raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
end end
def private_address_exceptions
@private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) }
end
end end
end end

View file

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

View file

@ -9,10 +9,16 @@ class Vacuum::ImportsVacuum
private private
def clean_unconfirmed_imports! 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 end
def clean_old_imports! def clean_old_imports!
BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all BulkImport
.archival_completed
.in_batches
.delete_all
end end
end end

View file

@ -94,6 +94,8 @@ class Account < ApplicationRecord
include Account::Interactions include Account::Interactions
include Account::Merging include Account::Merging
include Account::Search include Account::Search
include Account::Sensitizes
include Account::Silences
include Account::StatusesSearch include Account::StatusesSearch
include Account::OtherSettings include Account::OtherSettings
include Account::MasterSettings include Account::MasterSettings
@ -136,9 +138,6 @@ class Account < ApplicationRecord
scope :remote, -> { where.not(domain: nil) } scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) } scope :local, -> { where(domain: nil) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } 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 :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
scope :recent, -> { reorder(id: :desc) } scope :recent, -> { reorder(id: :desc) }
scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) } scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) }
@ -271,30 +270,6 @@ class Account < ApplicationRecord
ResolveAccountService.new.call(acct) unless local? ResolveAccountService.new.call(acct) unless local?
end 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! def memorialize!
update!(memorial: true) update!(memorial: true)
end end

View file

@ -136,7 +136,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
end end
def without_direct_scope def without_direct_scope
Status.where.not(visibility: :direct) Status.not_direct_visibility
end end
def old_enough_scope(max_id = nil) 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_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze,
create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze,
create_ip_block: { target_type: 'IpBlock', 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_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze,
create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, create_user_role: { target_type: 'UserRole', action: 'create' }.freeze,
create_canonical_email_block: { target_type: 'CanonicalEmailBlock', 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_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze,
destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze, destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze,
destroy_ip_block: { target_type: 'IpBlock', 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_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze,
destroy_unavailable_domain: { target_type: 'UnavailableDomain', 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_2fa_user: { target_type: 'User', action: 'disable_2fa' }.freeze,
disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
disable_user: { target_type: 'User', 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_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze,
enable_user: { target_type: 'User', 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, memorialize_account: { target_type: 'Account', action: 'memorialize' }.freeze,
promote_user: { target_type: 'User', action: 'promote' }.freeze, promote_user: { target_type: 'User', action: 'promote' }.freeze,
remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.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) def scope_for(key, _value)
case key.to_s case key.to_s
when 'media' 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 else
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
end end

View file

@ -21,6 +21,9 @@
class BulkImport < ApplicationRecord class BulkImport < ApplicationRecord
self.inheritance_column = false self.inheritance_column = false
ARCHIVE_PERIOD = 1.week
CONFIRM_PERIOD = 10.minutes
belongs_to :account belongs_to :account
has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all
@ -42,6 +45,9 @@ class BulkImport < ApplicationRecord
validates :type, presence: true 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) def self.progress!(bulk_import_id, imported: false)
# Use `increment_counter` so that the incrementation is done atomically in the database # Use `increment_counter` so that the incrementation is done atomically in the database
BulkImport.increment_counter(:processed_items, bulk_import_id) 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 # The code is kept similar to ActiveRecord::Persistence code and calls it
# directly when we are not handling a reblog. # 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? return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present?
primary_key = self.primary_key primary_key = self.primary_key
@ -30,16 +32,21 @@ module Status::SafeReblogInsert
# The following line departs from stock ActiveRecord # The following line departs from stock ActiveRecord
# Original code was: # 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: # Instead, we use a custom builder when a reblog is happening:
im = _compile_reblog_insert(values) 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. # 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 # 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? raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil?
end end
end end
end
def _compile_reblog_insert(values) def _compile_reblog_insert(values)
# This is somewhat equivalent to the following code of ActiveRecord::Persistence: # 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 validates :domain, presence: true, uniqueness: true, domain: true
scope :parents, -> { where(parent_id: nil) }
# Used for adding multiple blocks at once # Used for adding multiple blocks at once
attr_accessor :other_domains attr_accessor :other_domains

View file

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

View file

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

View file

@ -15,6 +15,7 @@ class ScheduledStatus < ApplicationRecord
TOTAL_LIMIT = 300 TOTAL_LIMIT = 300
DAILY_LIMIT = 25 DAILY_LIMIT = 25
MINIMUM_OFFSET = 5.minutes.freeze
belongs_to :account, inverse_of: :scheduled_statuses belongs_to :account, inverse_of: :scheduled_statuses
has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify
@ -26,7 +27,7 @@ class ScheduledStatus < ApplicationRecord
private private
def validate_future_date 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 end
def validate_total_limit def validate_total_limit

View file

@ -30,6 +30,8 @@ class SessionActivation < ApplicationRecord
DEFAULT_SCOPES = %w(read write follow).freeze DEFAULT_SCOPES = %w(read write follow).freeze
scope :latest, -> { order(id: :desc) }
class << self class << self
def active?(id) def active?(id)
id && exists?(session_id: id) id && exists?(session_id: id)
@ -48,7 +50,7 @@ class SessionActivation < ApplicationRecord
end end
def purge_old 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 end
def exclusive(id) def exclusive(id)

View file

@ -24,7 +24,7 @@ class SoftwareUpdate < ApplicationRecord
class << self class << self
def check_enabled? def check_enabled?
ENV['UPDATE_CHECK_URL'] != '' Rails.configuration.x.mastodon.software_update_url.present?
end end
def pending_to_a 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, -> { where(visibility: %i(public public_unlisted login unlisted)) }
scope :distributable_visibility_for_anonymous, -> { where(visibility: %i(public public_unlisted 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 :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_create_commit :trigger_create_webhooks
after_update_commit :trigger_update_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 :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 :not_signed_in_recently, -> { where(current_sign_in_at: ...ACTIVE_DURATION.ago) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) } 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_validation :sanitize_role
before_create :set_approved 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::AccessGrant.by_resource_owner(self).update_all(revoked_at: Time.now.utc)
Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch| 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 Web::PushSubscription.where(access_token_id: batch).delete_all
# Revoke each access token for the Streaming API, since `update_all`` # Revoke each access token for the Streaming API, since `update_all``
@ -467,7 +467,7 @@ class User < ApplicationRecord
end end
def sign_up_from_ip_requires_approval? 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 end
def sign_up_email_requires_approval? def sign_up_email_requires_approval?

View file

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

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class REST::CredentialApplicationSerializer < REST::ApplicationSerializer class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
attributes :client_id, :client_secret attributes :client_id, :client_secret, :client_secret_expires_at
def client_id def client_id
object.uid object.uid
@ -10,4 +10,10 @@ class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
def client_secret def client_secret
object.secret object.secret
end 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 end

View file

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

View file

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

View file

@ -12,7 +12,7 @@ class UnallowDomainService < BaseService
private private
def suspend_accounts!(domain) 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) AfterUnallowDomainWorker.perform_async(domain)
end end
end end

View file

@ -16,7 +16,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: @time_period.last, 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'), label: t('admin.dashboard.new_users'),
measure: 'new_users', measure: 'new_users',
start_at: @time_period.first start_at: @time_period.first
@ -24,7 +24,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: @time_period.last, 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'), label: t('admin.dashboard.active_users'),
measure: 'active_users', measure: 'active_users',
start_at: @time_period.first start_at: @time_period.first
@ -39,7 +39,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: @time_period.last, 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'), label: t('admin.dashboard.opened_reports'),
measure: 'opened_reports', measure: 'opened_reports',
start_at: @time_period.first start_at: @time_period.first
@ -47,7 +47,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: @time_period.last, 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'), label: t('admin.dashboard.resolved_reports'),
measure: 'resolved_reports', measure: 'resolved_reports',
start_at: @time_period.first start_at: @time_period.first

View file

@ -7,7 +7,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: period_end_at, 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'), label: t('admin.instances.dashboard.instance_accounts_measure'),
measure: 'instance_accounts', measure: 'instance_accounts',
params: { domain: instance_domain }, params: { domain: instance_domain },
@ -43,7 +43,7 @@
.dashboard__item .dashboard__item
= react_admin_component :counter, = react_admin_component :counter,
end_at: period_end_at, 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'), label: t('admin.instances.dashboard.instance_reports_measure'),
measure: 'instance_reports', measure: 'instance_reports',
params: { domain: instance_domain }, params: { domain: instance_domain },

View file

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

View file

@ -13,6 +13,8 @@ class Web::PushNotificationWorker
@subscription = Web::PushSubscription.find(subscription_id) @subscription = Web::PushSubscription.find(subscription_id)
@notification = Notification.find(notification_id) @notification = Notification.find(notification_id)
return if @notification.updated_at < TTL.ago
# Polymorphically associated activity could have been deleted # Polymorphically associated activity could have been deleted
# in the meantime, so we have to double-check before proceeding # in the meantime, so we have to double-check before proceeding
return unless @notification.activity.present? && @subscription.pushable?(@notification) 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. # 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 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/stoplight/redis_data_store_extensions'
require_relative '../lib/active_record/database_tasks_extensions' require_relative '../lib/active_record/database_tasks_extensions'
require_relative '../lib/active_record/batches' 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' require_relative '../lib/simple_navigation/item_extensions'
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true' Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
@ -61,10 +59,7 @@ Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
module Mastodon module Mastodon
class Application < Rails::Application class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version. # Initialize configuration defaults for originally generated Rails version.
config.load_defaults 7.1 config.load_defaults 7.2
# Explicitly set the cache format version to align with Rails version
config.active_support.cache_format_version = 7.1
# Please, add to the `ignore` list any other `lib` subdirectories that do # 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. # not contain `.rb` files, or that should not be reloaded or eager loaded.
@ -110,6 +105,7 @@ module Mastodon
end end
config.x.captcha = config_for(:captcha) config.x.captcha = config_for(:captcha)
config.x.mastodon = config_for(:mastodon)
config.x.translation = config_for(:translation) config.x.translation = config_for(:translation)
config.to_prepare do 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? 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 # Generate random VAPID keys
Webpush.generate_key.tap do |vapid_key| Webpush.generate_key.tap do |vapid_key|
config.x.vapid_private_key = vapid_key.private_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. # Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false 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 config.action_mailer.perform_caching = false
# Print deprecation notices to the Rails logger. # 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. # Raise error when a before_action's only/except options reference missing actions.
config.action_controller.raise_on_missing_callback_actions = true 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 end
Redis.raise_deprecations = true Redis.raise_deprecations = true

View file

@ -17,7 +17,6 @@ Rails.application.configure do
# Full error reports are disabled and caching is turned on. # Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false config.consider_all_requests_local = false
config.action_controller.perform_caching = true 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 # 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). # 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. # Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false 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. # 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. # Specifies the header that your server uses for sending files.
config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present? 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 # 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? 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. # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = true config.force_ssl = true
# Skip http-to-https redirect for the default health check endpoint. # 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 # Log to STDOUT by default
# information to avoid inadvertent exposure of personally identifiable information (PII). If you config.logger = ActiveSupport::Logger.new($stdout)
# want to log everything, set the level to "debug". .tap { |logger| logger.formatter = ::Logger::Formatter.new }
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym .then { |logger| ActiveSupport::TaggedLogging.new(logger) }
# Prepend all log lines with the following tags. # Prepend all log lines with the following tags.
config.log_tags = [:request_id] 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. # Use a different cache store in production.
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache 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_adapter = :resque
# config.active_job.queue_name_prefix = "mastodon_production" # 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 config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors. # 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? { key: controller.signature_key_id } if controller.respond_to?(:signed_request?) && controller.signed_request?
end 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. # Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false config.active_record.dump_schema_after_migration = false
config.action_mailer.perform_caching = false config.action_mailer.perform_caching = false
# E-mails # E-mails

View file

@ -19,8 +19,6 @@ Rails.application.configure do
# loading is working properly before deploying your code. # loading is working properly before deploying your code.
config.eager_load = ENV['CI'].present? config.eager_load = ENV['CI'].present?
config.assets_digest = false
# Show full error reports and disable caching. # Show full error reports and disable caching.
config.consider_all_requests_local = true config.consider_all_requests_local = true
config.action_controller.perform_caching = false config.action_controller.perform_caching = false
@ -32,6 +30,8 @@ Rails.application.configure do
# Disable request forgery protection in test environment. # Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false 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.perform_caching = false
config.action_mailer.default_options = { from: 'notifications@localhost' } config.action_mailer.default_options = { from: 'notifications@localhost' }
@ -41,6 +41,10 @@ Rails.application.configure do
# ActionMailer::Base.deliveries array. # ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test 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. # Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr config.active_support.deprecation = :stderr
@ -58,7 +62,6 @@ Rails.application.configure do
# Raise exceptions for disallowed deprecations. # Raise exceptions for disallowed deprecations.
config.active_support.disallowed_deprecation = :raise config.active_support.disallowed_deprecation = :raise
config.i18n.default_locale = :en
config.i18n.fallbacks = true config.i18n.fallbacks = true
# Tell Active Support which deprecation messages to disallow. # 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: error:
title: A apărut o eroare title: A apărut o eroare
new: 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 review_permissions: Revizuiți permisiunile
title: Autorizare necesară title: Autorizare necesară
show: show:
@ -82,6 +83,7 @@ ro:
access_denied: Proprietarul de resurse sau serverul de autorizare a refuzat cererea. 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. 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_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_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_redirect_uri: Uri-ul de redirecționare inclus nu este valid.
invalid_request: invalid_request:
@ -134,6 +136,7 @@ ro:
media: Atașamente media media: Atașamente media
mutes: Pus pe silențios mutes: Pus pe silențios
notifications: Notificări notifications: Notificări
profile: Profilul tău Mastodon
push: Notificări push push: Notificări push
reports: Rapoarte reports: Rapoarte
search: Căutare search: Căutare
@ -148,12 +151,23 @@ ro:
scopes: scopes:
admin:read: citește toate datele de pe server admin:read: citește toate datele de pe server
admin:read:accounts: citește informații sensibile ale tuturor conturilor 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:read:reports: citește informații sensibile din toate rapoartele și conturile raportate
admin:write: modifică toate datele de pe server admin:write: modifică toate datele de pe server
admin:write:accounts: efectuează acțiuni de moderare pe conturi 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 admin:write:reports: efectuează acțiuni de moderare pe rapoarte
crypto: utilizează criptare la ambele capete crypto: utilizează criptare la ambele capete
follow: modifică relațiile contului follow: modifică relațiile contului
profile: citește doar informațiile de profil ale contului tău
push: primește notificările tale push push: primește notificările tale push
read: citește toate datele contului tău read: citește toate datele contului tău
read:accounts: vede informațiile privind conturile read:accounts: vede informațiile privind conturile

View file

@ -72,7 +72,7 @@ sv:
revoke: Är du säker? revoke: Är du säker?
index: index:
authorized_at: Godkändes den %{date} 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} last_used_at: Användes senast %{date}
never_used: Aldrig använd never_used: Aldrig använd
scopes: Behörigheter scopes: Behörigheter

View file

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

View file

@ -193,6 +193,7 @@ en:
create_domain_block: Create Domain Block create_domain_block: Create Domain Block
create_email_domain_block: Create Email Domain Block create_email_domain_block: Create Email Domain Block
create_ip_block: Create IP rule create_ip_block: Create IP rule
create_relay: Create Relay
create_unavailable_domain: Create Unavailable Domain create_unavailable_domain: Create Unavailable Domain
create_user_role: Create Role create_user_role: Create Role
demote_user: Demote User demote_user: Demote User
@ -204,14 +205,17 @@ en:
destroy_email_domain_block: Delete Email Domain Block destroy_email_domain_block: Delete Email Domain Block
destroy_instance: Purge Domain destroy_instance: Purge Domain
destroy_ip_block: Delete IP rule destroy_ip_block: Delete IP rule
destroy_relay: Delete Relay
destroy_status: Delete Post destroy_status: Delete Post
destroy_unavailable_domain: Delete Unavailable Domain destroy_unavailable_domain: Delete Unavailable Domain
destroy_user_role: Destroy Role destroy_user_role: Destroy Role
disable_2fa_user: Disable 2FA disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji disable_custom_emoji: Disable Custom Emoji
disable_relay: Disable Relay
disable_sign_in_token_auth_user: Disable Email Token Authentication for User disable_sign_in_token_auth_user: Disable Email Token Authentication for User
disable_user: Disable User disable_user: Disable User
enable_custom_emoji: Enable Custom Emoji enable_custom_emoji: Enable Custom Emoji
enable_relay: Enable Relay
enable_sign_in_token_auth_user: Enable Email Token Authentication for User enable_sign_in_token_auth_user: Enable Email Token Authentication for User
enable_user: Enable User enable_user: Enable User
force_cw_status: Add CW to Post force_cw_status: Add CW to Post
@ -257,6 +261,7 @@ en:
create_domain_block_html: "%{name} blocked domain %{target}" create_domain_block_html: "%{name} blocked domain %{target}"
create_email_domain_block_html: "%{name} blocked email domain %{target}" create_email_domain_block_html: "%{name} blocked email domain %{target}"
create_ip_block_html: "%{name} created rule for IP %{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_unavailable_domain_html: "%{name} stopped delivery to domain %{target}"
create_user_role_html: "%{name} created %{target} role" create_user_role_html: "%{name} created %{target} role"
demote_user_html: "%{name} demoted user %{target}" demote_user_html: "%{name} demoted user %{target}"
@ -268,14 +273,17 @@ en:
destroy_email_domain_block_html: "%{name} unblocked email domain %{target}" destroy_email_domain_block_html: "%{name} unblocked email domain %{target}"
destroy_instance_html: "%{name} purged domain %{target}" destroy_instance_html: "%{name} purged domain %{target}"
destroy_ip_block_html: "%{name} deleted rule for IP %{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_status_html: "%{name} removed post by %{target}"
destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}" destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}"
destroy_user_role_html: "%{name} deleted %{target} role" destroy_user_role_html: "%{name} deleted %{target} role"
disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}" disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}"
disable_custom_emoji_html: "%{name} disabled emoji %{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_sign_in_token_auth_user_html: "%{name} disabled email token authentication for %{target}"
disable_user_html: "%{name} disabled login for user %{target}" disable_user_html: "%{name} disabled login for user %{target}"
enable_custom_emoji_html: "%{name} enabled emoji %{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_sign_in_token_auth_user_html: "%{name} enabled email token authentication for %{target}"
enable_user_html: "%{name} enabled login for user %{target}" enable_user_html: "%{name} enabled login for user %{target}"
force_cw_status_html: "%{name} turned post by %{target} cw" 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 merge_long: Varðveit verandi teigarøð og legg nýggjar afturat
overwrite: Skriva omaná overwrite: Skriva omaná
overwrite_long: Legg nýggj teigarøð inn fyri tey verandi 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. 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 recent_imports: Feskar innflytingar
states: states:

View file

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

View file

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

View file

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

View file

@ -4,7 +4,6 @@ ast:
hints: hints:
account: account:
note: 'Pues @mentar a otros perfiles o poner #etiquetes.' 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: 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 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> type_html: Escueyi qué facer con <strong>%{acct}</strong>

View file

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

View file

@ -9,7 +9,6 @@ bg:
indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо. indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо.
note: 'Може да @споменавате други хора или #хаштагове.' note: 'Може да @споменавате други хора или #хаштагове.'
show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това. show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това.
unlocked: Хората ще могат да ви последват без изискване на одобрение. Размаркирайте, ако искате да преглеждате заявките за последване и изберете дали да приемете или отхвърлите новите последователи.
account_alias: account_alias:
acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите
account_migration: 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. 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.' 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. 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: account_alias:
acct: Especifica l'usuari@domini del compte des d'on et vols traslladar acct: Especifica l'usuari@domini del compte des d'on et vols traslladar
account_migration: 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. 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.' 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ě. 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: account_alias:
acct: Zadejte svůj účet, ze kterého se chcete přesunout jinam, ve formátu přezdívka@doména acct: Zadejte svůj účet, ze kterého se chcete přesunout jinam, ve formátu přezdívka@doména
account_migration: 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. 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.' 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. 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: account_alias:
acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono
account_migration: 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. 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.' 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. 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: account_alias:
acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte
account_migration: account_migration:

View file

@ -9,7 +9,6 @@ el:
indexable: Οι δημόσιες δημοσιεύσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις δημοσιεύσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει. indexable: Οι δημόσιες δημοσιεύσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις δημοσιεύσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει.
note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.' note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.'
show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει. show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει.
unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να αξιολογείς τα αιτήματα ακολούθησης και να επιλέξεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους.
account_alias: account_alias:
acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς
account_migration: 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. 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.' 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. 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: account_alias:
acct: Specify the username@domain of the account you want to move from acct: Specify the username@domain of the account you want to move from
account_migration: 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. 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.' 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. 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: account_alias:
acct: Specify the username@domain of the account you want to move from acct: Specify the username@domain of the account you want to move from
account_migration: 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. 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.' 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. 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: account_alias:
acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi
account_migration: 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. 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.' 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. 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: account_alias:
acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte
account_migration: 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. 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.' 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. 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: account_alias:
acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar
account_migration: account_migration:

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