Merge remote-tracking branch 'parent/main' into upstream-20241113
This commit is contained in:
commit
910eafda63
177 changed files with 1625 additions and 659 deletions
42
CHANGELOG.md
42
CHANGELOG.md
|
@ -2,6 +2,48 @@
|
|||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [4.3.1] - 2024-10-21
|
||||
|
||||
### Added
|
||||
|
||||
- Add more explicit explanations about author attribution and `fediverse:creator` (#32383 by @ClearlyClaire)
|
||||
- Add ability to group follow notifications in WebUI, can be disabled in the column settings (#32520 by @renchap)
|
||||
- Add back a 6 hours mute duration option (#32522 by @renchap)
|
||||
- Add note about not changing ActiveRecord encryption secrets once they are set (#32413, #32476, #32512, and #32537 by @ClearlyClaire and @mjankowski)
|
||||
|
||||
### Changed
|
||||
|
||||
- Change translation feature to translate to selected regional variant (e.g. pt-BR) if available (#32428 by @c960657)
|
||||
|
||||
### Removed
|
||||
|
||||
- Remove ability to get embed code for remote posts (#32578 by @ClearlyClaire)\
|
||||
Getting the embed code is only reliable for local posts.\
|
||||
It never worked for non-Mastodon servers, and stopped working correctly with the changes made in 4.3.0.\
|
||||
We have therefore decided to remove the menu entry while we investigate solutions.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix follow recommendation moderation page default language when using regional variant (#32580 by @ClearlyClaire)
|
||||
- Fix column-settings spacing in local timeline in advanced view (#32567 by @lindwurm)
|
||||
- Fix broken i18n in text welcome mailer tags area (#32571 by @mjankowski)
|
||||
- Fix missing or incorrect cache-control headers for Streaming server (#32551 by @ThisIsMissEm)
|
||||
- Fix only the first paragraph being displayed in some notifications (#32348 by @ClearlyClaire)
|
||||
- Fix reblog icons on account media view (#32506 by @tribela)
|
||||
- Fix Content-Security-Policy not allowing OpenStack SWIFT object storage URI (#32439 by @kenkiku1021)
|
||||
- Fix back arrow pointing to the incorrect direction in RTL languages (#32485 by @renchap)
|
||||
- Fix streaming server using `REDIS_USERNAME` instead of `REDIS_USER` (#32493 by @ThisIsMissEm)
|
||||
- Fix follow recommendation carrousel scrolling on RTL layouts (#32462 and #32505 by @ClearlyClaire)
|
||||
- Fix follow recommendation suppressions not applying immediately (#32392 by @ClearlyClaire)
|
||||
- Fix language of push notifications (#32415 by @ClearlyClaire)
|
||||
- Fix mute duration not being shown in list of muted accounts in web UI (#32388 by @ClearlyClaire)
|
||||
- Fix “Mark every notification as read” not updating the read marker if scrolled down (#32385 by @ClearlyClaire)
|
||||
- Fix “Mention” appearing for otherwise filtered posts (#32356 by @ClearlyClaire)
|
||||
- Fix notification requests from suspended accounts still being listed (#32354 by @ClearlyClaire)
|
||||
- Fix list edition modal styling (#32358 and #32367 by @ClearlyClaire and @vmstan)
|
||||
- Fix 4 columns barely not fitting on 1920px screen (#32361 by @ClearlyClaire)
|
||||
- Fix icon alignment in applications list (#32293 by @mjankowski)
|
||||
|
||||
## [4.3.0] - 2024-10-08
|
||||
|
||||
The following changelog entries focus on changes visible to users, administrators, client developers or federated software developers, but there has also been a lot of code modernization, refactoring, and tooling work, in particular by @mjankowski.
|
||||
|
|
5
Gemfile
5
Gemfile
|
@ -6,7 +6,7 @@ ruby '>= 3.2.0'
|
|||
gem 'propshaft'
|
||||
gem 'puma', '~> 6.3'
|
||||
gem 'rack', '~> 2.2.7'
|
||||
gem 'rails', '~> 7.1.1'
|
||||
gem 'rails', '~> 7.2.0'
|
||||
gem 'thor', '~> 1.2'
|
||||
|
||||
gem 'dotenv'
|
||||
|
@ -63,6 +63,7 @@ gem 'kaminari', '~> 1.2'
|
|||
gem 'link_header', '~> 0.0'
|
||||
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
|
||||
gem 'mime-types', '~> 3.6.0', require: 'mime/types/columnar'
|
||||
gem 'mutex_m'
|
||||
gem 'nokogiri', '~> 1.15'
|
||||
gem 'oj', '~> 3.14'
|
||||
gem 'ox', '~> 2.14'
|
||||
|
@ -221,7 +222,7 @@ gem 'concurrent-ruby', require: false
|
|||
gem 'connection_pool', require: false
|
||||
gem 'xorcist', '~> 1.1'
|
||||
|
||||
gem 'net-http', '~> 0.4.0'
|
||||
gem 'net-http', '~> 0.5.0'
|
||||
gem 'rubyzip', '~> 2.3'
|
||||
|
||||
gem 'hcaptcha', '~> 7.1'
|
||||
|
|
149
Gemfile.lock
149
Gemfile.lock
|
@ -10,51 +10,46 @@ GIT
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
actioncable (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
activejob (= 7.1.4.2)
|
||||
activerecord (= 7.1.4.2)
|
||||
activestorage (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
mail (>= 2.7.1)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailer (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
actionview (= 7.1.4.2)
|
||||
activejob (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailbox (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
activejob (= 7.2.2)
|
||||
activerecord (= 7.2.2)
|
||||
activestorage (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
actionview (= 7.2.2)
|
||||
activejob (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.1.4.2)
|
||||
actionview (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
actionpack (7.2.2)
|
||||
actionview (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
rack (>= 2.2.4)
|
||||
rack (>= 2.2.4, < 3.2)
|
||||
rack-session (>= 1.0.1)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
actiontext (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
activerecord (= 7.1.4.2)
|
||||
activestorage (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
useragent (~> 0.16)
|
||||
actiontext (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
activerecord (= 7.2.2)
|
||||
activestorage (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
actionview (7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
|
@ -64,31 +59,33 @@ GEM
|
|||
activemodel (>= 4.1)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
activejob (7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
activejob (7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
activerecord (7.1.4.2)
|
||||
activemodel (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
activemodel (7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
activerecord (7.2.2)
|
||||
activemodel (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
activejob (= 7.1.4.2)
|
||||
activerecord (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
activestorage (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
activejob (= 7.2.2)
|
||||
activerecord (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
marcel (~> 1.0)
|
||||
activesupport (7.1.4.2)
|
||||
activesupport (7.2.2)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||
connection_pool (>= 2.2.5)
|
||||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
mutex_m
|
||||
tzinfo (~> 2.0)
|
||||
securerandom (>= 0.3)
|
||||
tzinfo (~> 2.0, >= 2.0.5)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
aes_key_wrap (1.1.0)
|
||||
|
@ -100,8 +97,8 @@ GEM
|
|||
attr_required (1.0.2)
|
||||
awrence (1.2.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.997.0)
|
||||
aws-sdk-core (3.211.0)
|
||||
aws-partitions (1.1001.0)
|
||||
aws-sdk-core (3.212.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
|
@ -109,7 +106,7 @@ GEM
|
|||
aws-sdk-kms (1.95.0)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.169.0)
|
||||
aws-sdk-s3 (1.170.1)
|
||||
aws-sdk-core (~> 3, >= 3.210.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
|
@ -120,6 +117,7 @@ GEM
|
|||
base64 (0.2.0)
|
||||
bcp47_spec (0.2.1)
|
||||
bcrypt (3.1.20)
|
||||
benchmark (0.4.0)
|
||||
better_errors (2.10.1)
|
||||
erubi (>= 1.0.0)
|
||||
rack (>= 0.9.0)
|
||||
|
@ -416,7 +414,7 @@ GEM
|
|||
msgpack (1.7.3)
|
||||
multi_json (1.15.0)
|
||||
mutex_m (0.2.0)
|
||||
net-http (0.4.1)
|
||||
net-http (0.5.0)
|
||||
uri
|
||||
net-imap (0.5.0)
|
||||
date
|
||||
|
@ -613,20 +611,20 @@ GEM
|
|||
rackup (1.0.0)
|
||||
rack (< 3)
|
||||
webrick
|
||||
rails (7.1.4.2)
|
||||
actioncable (= 7.1.4.2)
|
||||
actionmailbox (= 7.1.4.2)
|
||||
actionmailer (= 7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
actiontext (= 7.1.4.2)
|
||||
actionview (= 7.1.4.2)
|
||||
activejob (= 7.1.4.2)
|
||||
activemodel (= 7.1.4.2)
|
||||
activerecord (= 7.1.4.2)
|
||||
activestorage (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
rails (7.2.2)
|
||||
actioncable (= 7.2.2)
|
||||
actionmailbox (= 7.2.2)
|
||||
actionmailer (= 7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
actiontext (= 7.2.2)
|
||||
actionview (= 7.2.2)
|
||||
activejob (= 7.2.2)
|
||||
activemodel (= 7.2.2)
|
||||
activerecord (= 7.2.2)
|
||||
activestorage (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 7.1.4.2)
|
||||
railties (= 7.2.2)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
actionview (>= 5.0.1.rc1)
|
||||
|
@ -641,10 +639,10 @@ GEM
|
|||
rails-i18n (7.0.10)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 6.0.0, < 8)
|
||||
railties (7.1.4.2)
|
||||
actionpack (= 7.1.4.2)
|
||||
activesupport (= 7.1.4.2)
|
||||
irb
|
||||
railties (7.2.2)
|
||||
actionpack (= 7.2.2)
|
||||
activesupport (= 7.2.2)
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
thor (~> 1.0, >= 1.2.2)
|
||||
|
@ -755,6 +753,7 @@ GEM
|
|||
scenic (1.8.0)
|
||||
activerecord (>= 4.0.0)
|
||||
railties (>= 4.0.0)
|
||||
securerandom (0.3.2)
|
||||
selenium-webdriver (4.26.0)
|
||||
base64 (~> 0.2)
|
||||
logger (~> 1.4)
|
||||
|
@ -796,7 +795,7 @@ GEM
|
|||
stoplight (4.1.0)
|
||||
redlock (~> 1.0)
|
||||
stringio (3.1.1)
|
||||
strong_migrations (2.0.2)
|
||||
strong_migrations (2.1.0)
|
||||
activerecord (>= 6.1)
|
||||
swd (1.3.0)
|
||||
activesupport (>= 3)
|
||||
|
@ -811,7 +810,7 @@ GEM
|
|||
test-prof (1.4.2)
|
||||
thor (1.3.2)
|
||||
tilt (2.4.0)
|
||||
timeout (0.4.1)
|
||||
timeout (0.4.2)
|
||||
tpm-key_attestation (0.12.1)
|
||||
bindata (~> 2.4)
|
||||
openssl (> 2.0)
|
||||
|
@ -838,6 +837,7 @@ GEM
|
|||
unf_ext (0.0.9.1)
|
||||
unicode-display_width (2.6.0)
|
||||
uri (0.13.1)
|
||||
useragent (0.16.10)
|
||||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
|
@ -946,7 +946,8 @@ DEPENDENCIES
|
|||
mario-redis-lock (~> 1.2)
|
||||
memory_profiler
|
||||
mime-types (~> 3.6.0)
|
||||
net-http (~> 0.4.0)
|
||||
mutex_m
|
||||
net-http (~> 0.5.0)
|
||||
net-ldap (~> 0.18)
|
||||
nokogiri (~> 1.15)
|
||||
oj (~> 3.14)
|
||||
|
@ -984,7 +985,7 @@ DEPENDENCIES
|
|||
rack-attack (~> 6.6)
|
||||
rack-cors (~> 2.0)
|
||||
rack-test (~> 2.1)
|
||||
rails (~> 7.1.1)
|
||||
rails (~> 7.2.0)
|
||||
rails-controller-testing (~> 1.0)
|
||||
rails-i18n (~> 7.0)
|
||||
rdf-normalize (~> 0.5)
|
||||
|
|
2
Rakefile
2
Rakefile
|
@ -3,6 +3,6 @@
|
|||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require File.expand_path('config/application', __dir__)
|
||||
require_relative 'config/application'
|
||||
|
||||
Rails.application.load_tasks
|
||||
|
|
|
@ -5,7 +5,7 @@ module Admin
|
|||
def index
|
||||
authorize :email_domain_block, :index?
|
||||
|
||||
@email_domain_blocks = EmailDomainBlock.where(parent_id: nil).includes(:children).order(id: :desc).page(params[:page])
|
||||
@email_domain_blocks = EmailDomainBlock.parents.includes(:children).order(id: :desc).page(params[:page])
|
||||
@form = Form::EmailDomainBlockBatch.new
|
||||
end
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ module Admin
|
|||
|
||||
def deactivate_all
|
||||
authorize :invite, :deactivate_all?
|
||||
Invite.available.in_batches.update_all(expires_at: Time.now.utc)
|
||||
Invite.available.in_batches.touch_all(:expires_at)
|
||||
redirect_to admin_invites_path
|
||||
end
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ module Admin
|
|||
@relay = Relay.new(resource_params)
|
||||
|
||||
if @relay.save
|
||||
log_action :create, @relay
|
||||
@relay.enable!
|
||||
redirect_to admin_relays_path
|
||||
else
|
||||
|
@ -31,18 +32,21 @@ module Admin
|
|||
def destroy
|
||||
authorize :relay, :update?
|
||||
@relay.destroy
|
||||
log_action :destroy, @relay
|
||||
redirect_to admin_relays_path
|
||||
end
|
||||
|
||||
def enable
|
||||
authorize :relay, :update?
|
||||
@relay.enable!
|
||||
log_action :enable, @relay
|
||||
redirect_to admin_relays_path
|
||||
end
|
||||
|
||||
def disable
|
||||
authorize :relay, :update?
|
||||
@relay.disable!
|
||||
log_action :disable, @relay
|
||||
redirect_to admin_relays_path
|
||||
end
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ module Admin::ActionLogsHelper
|
|||
else
|
||||
I18n.t('admin.action_logs.deleted_account')
|
||||
end
|
||||
when 'Relay'
|
||||
link_to log.human_identifier, admin_relays_path
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -18,6 +18,6 @@ module RegistrationHelper
|
|||
end
|
||||
|
||||
def ip_blocked?(remote_ip)
|
||||
IpBlock.where(severity: :sign_up_block).exists?(['ip >>= ?', remote_ip.to_s])
|
||||
IpBlock.severity_sign_up_block.containing(remote_ip.to_s).exists?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,16 +7,17 @@ export const MostUsedHashtag: React.FC<{
|
|||
}> = ({ data }) => {
|
||||
const hashtag = data[0];
|
||||
|
||||
if (!hashtag) {
|
||||
return (
|
||||
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag' />
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='annual-report__bento__box annual-report__summary__most-used-hashtag'>
|
||||
<div className='annual-report__summary__most-used-hashtag__hashtag'>
|
||||
#{hashtag.name}
|
||||
{hashtag ? (
|
||||
<>#{hashtag.name}</>
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id='annual_report.summary.most_used_hashtag.none'
|
||||
defaultMessage='None'
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
<div className='annual-report__summary__most-used-hashtag__label'>
|
||||
<FormattedMessage
|
||||
|
|
|
@ -22,9 +22,9 @@ export const Percentile: React.FC<{
|
|||
percentage: () => (
|
||||
<div className='annual-report__summary__percentile__number'>
|
||||
<FormattedNumber
|
||||
value={percentile / 100}
|
||||
value={Math.min(percentile, 99) / 100}
|
||||
style='percent'
|
||||
maximumFractionDigits={1}
|
||||
maximumFractionDigits={percentile < 1 ? 1 : 0}
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
|
|
|
@ -68,7 +68,7 @@ class FollowRequests extends ImmutablePureComponent {
|
|||
);
|
||||
|
||||
return (
|
||||
<Column bindToDocument={!multiColumn} icon='user-plus' iconComponent={PersonAddIcon} heading={intl.formatMessage(messages.heading)}>
|
||||
<Column bindToDocument={!multiColumn} icon='user-plus' iconComponent={PersonAddIcon} heading={intl.formatMessage(messages.heading)} alwaysShowBackButton>
|
||||
<ScrollableList
|
||||
scrollKey='follow_requests'
|
||||
onLoadMore={this.handleLoadMore}
|
||||
|
|
|
@ -512,7 +512,9 @@ class UI extends PureComponent {
|
|||
}
|
||||
};
|
||||
|
||||
handleHotkeyBack = () => {
|
||||
handleHotkeyBack = e => {
|
||||
e.preventDefault();
|
||||
|
||||
const { history } = this.props;
|
||||
|
||||
if (history.location?.state?.fromMastodon) {
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
"compose_form.hashtag_warning": "Гэты допіс не будзе паказаны пад аніякім хэштэгам, бо ён не публічны. Толькі публічныя допісы можна знайсці па хэштэгу.",
|
||||
"compose_form.lock_disclaimer": "Ваш уліковы запіс не {locked}. Усе могуць падпісацца на вас, каб бачыць допісы толькі для падпісчыкаў.",
|
||||
"compose_form.lock_disclaimer.lock": "закрыты",
|
||||
"compose_form.placeholder": "Што здарылася?",
|
||||
"compose_form.placeholder": "Што ў вас новага?",
|
||||
"compose_form.poll.duration": "Працягласць апытання",
|
||||
"compose_form.poll.multiple": "Множны выбар",
|
||||
"compose_form.poll.option_placeholder": "Варыянт {number}",
|
||||
|
|
|
@ -87,11 +87,29 @@
|
|||
"alert.unexpected.title": "Wps!",
|
||||
"alt_text_badge.title": "Testun Amgen",
|
||||
"announcement.announcement": "Cyhoeddiad",
|
||||
"annual_report.summary.archetype.booster": "Y hyrwyddwr",
|
||||
"annual_report.summary.archetype.lurker": "Yr arsylwr",
|
||||
"annual_report.summary.archetype.oracle": "Yr oracl",
|
||||
"annual_report.summary.archetype.pollster": "Yr arholwr",
|
||||
"annual_report.summary.archetype.replier": "Y sbardunwr",
|
||||
"annual_report.summary.followers.followers": "dilynwyr",
|
||||
"annual_report.summary.followers.total": "{count} cyfanswm",
|
||||
"annual_report.summary.here_it_is": "Dyma eich {year} yn gryno:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "postiad wedi'i ffefrynu fwyaf",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "postiad wedi'i hybu fwyaf",
|
||||
"annual_report.summary.highlighted_post.by_replies": "postiad gyda'r ymatebion mwyaf",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf",
|
||||
"annual_report.summary.new_posts.new_posts": "postiadau newydd",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Rydych chi yn y </topLabel><percentage></percentage><bottomLabel>mwyaf o ddefnyddwyr Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni fyddwn yn dweud wrth Bernie.",
|
||||
"annual_report.summary.thanks": "Diolch am fod yn rhan o Mastodon!",
|
||||
"attachments_list.unprocessed": "(heb eu prosesu)",
|
||||
"audio.hide": "Cuddio sain",
|
||||
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystro mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
|
||||
"block_modal.show_less": "Dangos llai",
|
||||
"block_modal.show_more": "Dangos mwy",
|
||||
"block_modal.show_more": "Dangos rhagor",
|
||||
"block_modal.they_cant_mention": "Nid ydynt yn gallu eich crybwyll na'ch dilyn.",
|
||||
"block_modal.they_cant_see_posts": "Nid ydynt yn gallu gweld eich postiadau ac ni fyddwch yn gweld eu rhai hwy.",
|
||||
"block_modal.they_will_know": "Gallant weld eu bod wedi'u rhwystro.",
|
||||
|
@ -163,9 +181,9 @@
|
|||
"compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis",
|
||||
"compose_form.poll.type": "Arddull",
|
||||
"compose_form.publish": "Postiad",
|
||||
"compose_form.publish_form": "Cyhoeddi",
|
||||
"compose_form.publish_form": "Postiad newydd",
|
||||
"compose_form.reply": "Ateb",
|
||||
"compose_form.save_changes": "Diweddariad",
|
||||
"compose_form.save_changes": "Diweddaru",
|
||||
"compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
|
||||
"compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
|
||||
"compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "Adroddodd {name} {target}",
|
||||
"notification.admin.sign_up": "Cofrestrodd {name}",
|
||||
"notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}",
|
||||
"notification.annual_report.message": "Mae eich #Wrapstodon {year} yn aros i chi! Gwelwch eich uchafbwyntiau ac amseroedd i'w cofio o'r flwyddyn hon ar Mastodon!",
|
||||
"notification.annual_report.view": "Gweld #Wrapstodon",
|
||||
"notification.favourite": "Ffafriodd {name} eich postiad",
|
||||
"notification.favourite.name_and_others_with_link": "Ffafriodd {name} a <a>{count, plural, one {# arall} other {# arall}}</a> eich postiad",
|
||||
"notification.follow": "Dilynodd {name} chi",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Ups!",
|
||||
"alt_text_badge.title": "Alt text",
|
||||
"announcement.announcement": "Bekendtgørelse",
|
||||
"annual_report.summary.archetype.booster": "Cool-hunter",
|
||||
"annual_report.summary.archetype.lurker": "Lurker",
|
||||
"annual_report.summary.archetype.oracle": "Oracle",
|
||||
"annual_report.summary.archetype.pollster": "Pollster",
|
||||
"annual_report.summary.archetype.replier": "Social butterfly",
|
||||
"annual_report.summary.followers.followers": "følgere",
|
||||
"annual_report.summary.followers.total": "{count} i alt",
|
||||
"annual_report.summary.here_it_is": "Her er {year} i sammendrag:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerede indlæg",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "mest boostede indlæg",
|
||||
"annual_report.summary.highlighted_post.by_replies": "indlæg med flest svar",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}s",
|
||||
"annual_report.summary.most_used_app.most_used_app": "mest benyttede app",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag",
|
||||
"annual_report.summary.new_posts.new_posts": "nye indlæg",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Det betyder, at man er i top</topLabel><percentage></percentage><bottomLabel>af Mastodon-brugere.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til Bernie.",
|
||||
"annual_report.summary.thanks": "Tak for at være en del af Mastodon!",
|
||||
"attachments_list.unprocessed": "(ubehandlet)",
|
||||
"audio.hide": "Skjul lyd",
|
||||
"block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.",
|
||||
|
@ -158,6 +176,7 @@
|
|||
"compose_form.poll.duration": "Afstemningens varighed",
|
||||
"compose_form.poll.multiple": "Multivalg",
|
||||
"compose_form.poll.option_placeholder": "Valgmulighed {number}",
|
||||
"compose_form.poll.single": "Enkeltvalg",
|
||||
"compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype",
|
||||
"compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype",
|
||||
"compose_form.poll.type": "Stil",
|
||||
|
@ -507,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} anmeldte {target}",
|
||||
"notification.admin.sign_up": "{name} tilmeldte sig",
|
||||
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# anden} other {# andre}} tilmeldte sig",
|
||||
"notification.annual_report.message": "{year} #Wrapstodon venter! Afslør årets højdepunkter og mindeværdige øjeblikke på Mastodon!",
|
||||
"notification.annual_report.view": "Vis #Wrapstodon",
|
||||
"notification.favourite": "{name} favoritmarkerede dit indlæg",
|
||||
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# anden} other {# andre}}</a> gjorde dit indlæg til favorit",
|
||||
"notification.follow": "{name} begyndte at følge dig",
|
||||
|
|
|
@ -525,15 +525,15 @@
|
|||
"notification.admin.report_statuses": "{name} meldete {target} wegen {category}",
|
||||
"notification.admin.report_statuses_other": "{name} meldete {target}",
|
||||
"notification.admin.sign_up": "{name} registrierte sich",
|
||||
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} registrierten sich",
|
||||
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich",
|
||||
"notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!",
|
||||
"notification.annual_report.view": "#Wrapstodon ansehen",
|
||||
"notification.favourite": "{name} favorisierte deinen Beitrag",
|
||||
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> favorisierten deinen Beitrag",
|
||||
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> favorisierten deinen Beitrag",
|
||||
"notification.follow": "{name} folgt dir",
|
||||
"notification.follow.name_and_others": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> folgen dir",
|
||||
"notification.follow.name_and_others": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> folgen dir",
|
||||
"notification.follow_request": "{name} möchte dir folgen",
|
||||
"notification.follow_request.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} möchten dir folgen",
|
||||
"notification.follow_request.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} möchten dir folgen",
|
||||
"notification.label.mention": "Erwähnung",
|
||||
"notification.label.private_mention": "Private Erwähnung",
|
||||
"notification.label.private_reply": "Private Antwort",
|
||||
|
@ -552,7 +552,7 @@
|
|||
"notification.own_poll": "Deine Umfrage ist beendet",
|
||||
"notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet",
|
||||
"notification.reblog": "{name} teilte deinen Beitrag",
|
||||
"notification.reblog.name_and_others_with_link": "{name} und <a>{count, plural, one {# weitere Person} other {# weitere Personen}}</a> teilten deinen Beitrag",
|
||||
"notification.reblog.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> teilten deinen Beitrag",
|
||||
"notification.relationships_severance_event": "Verbindungen mit {name} verloren",
|
||||
"notification.relationships_severance_event.account_suspension": "Ein Admin von {from} hat {target} gesperrt. Du wirst von diesem Profil keine Updates mehr erhalten und auch nicht mit ihm interagieren können.",
|
||||
"notification.relationships_severance_event.domain_block": "Ein Admin von {from} hat {target} blockiert – darunter {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst.",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Ουπς!",
|
||||
"alt_text_badge.title": "Εναλλακτικό κείμενο",
|
||||
"announcement.announcement": "Ανακοίνωση",
|
||||
"annual_report.summary.archetype.booster": "Ο κυνηγός των φοβερών",
|
||||
"annual_report.summary.archetype.lurker": "Ο διακριτικός",
|
||||
"annual_report.summary.archetype.oracle": "Η Πυθία",
|
||||
"annual_report.summary.archetype.pollster": "Ο δημοσκόπος",
|
||||
"annual_report.summary.archetype.replier": "Η κοινωνική πεταλούδα",
|
||||
"annual_report.summary.followers.followers": "ακόλουθοι",
|
||||
"annual_report.summary.followers.total": "{count} συνολικά",
|
||||
"annual_report.summary.here_it_is": "Εδώ είναι το {year} σου σε ανασκόπηση:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "πιο αγαπημένη ανάρτηση",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "πιο ενισχυμένη ανάρτηση",
|
||||
"annual_report.summary.highlighted_post.by_replies": "ανάρτηση με τις περισσότερες απαντήσεις",
|
||||
"annual_report.summary.highlighted_post.possessive": "του χρήστη {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "πιο χρησιμοποιημένη εφαρμογή",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "πιο χρησιμοποιημένη ετικέτα",
|
||||
"annual_report.summary.new_posts.new_posts": "νέες αναρτήσεις",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Αυτό σε βάζει στην κορυφή του </topLabel><percentage></percentage><bottomLabel>των χρηστών του Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Δεν θα το πούμε στον Bernie.",
|
||||
"annual_report.summary.thanks": "Ευχαριστούμε που συμμετέχεις στο Mastodon!",
|
||||
"attachments_list.unprocessed": "(μη επεξεργασμένο)",
|
||||
"audio.hide": "Απόκρυψη αρχείου ήχου",
|
||||
"block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.",
|
||||
|
@ -158,6 +176,7 @@
|
|||
"compose_form.poll.duration": "Διάρκεια δημοσκόπησης",
|
||||
"compose_form.poll.multiple": "Πολλαπλή επιλογή",
|
||||
"compose_form.poll.option_placeholder": "Επιλογή {number}",
|
||||
"compose_form.poll.single": "Μονή επιλογή",
|
||||
"compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές",
|
||||
"compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή",
|
||||
"compose_form.poll.type": "Στυλ",
|
||||
|
@ -196,6 +215,7 @@
|
|||
"confirmations.unfollow.title": "Άρση ακολούθησης;",
|
||||
"content_warning.hide": "Απόκρυψη ανάρτησης",
|
||||
"content_warning.show": "Εμφάνιση ούτως ή άλλως",
|
||||
"content_warning.show_more": "Εμφάνιση περισσότερων",
|
||||
"conversation.delete": "Διαγραφή συζήτησης",
|
||||
"conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
|
||||
"conversation.open": "Προβολή συνομιλίας",
|
||||
|
@ -304,6 +324,7 @@
|
|||
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
|
||||
"filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης",
|
||||
"filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης",
|
||||
"filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “<span>{title}</span>”",
|
||||
"filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις",
|
||||
"filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις",
|
||||
"firehose.all": "Όλα",
|
||||
|
@ -383,9 +404,10 @@
|
|||
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.",
|
||||
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.",
|
||||
"interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.",
|
||||
"interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα",
|
||||
"interaction_modal.description.vote": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σ' αυτή την ανάρτηση.",
|
||||
"interaction_modal.login.action": "Πήγαινέ με στην αρχική σελίδα",
|
||||
"interaction_modal.login.prompt": "Τομέας του οικιακού σου διακομιστή, πχ. mastodon.social",
|
||||
"interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;",
|
||||
"interaction_modal.no_account_yet": "Δεν είστε στο Mastodon;",
|
||||
"interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή",
|
||||
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
|
||||
"interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;",
|
||||
|
@ -394,6 +416,7 @@
|
|||
"interaction_modal.title.follow": "Ακολούθησε {name}",
|
||||
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
|
||||
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
|
||||
"interaction_modal.title.vote": "Ψήφισε στη δημοσκόπηση του χρήστη {name}",
|
||||
"intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
|
||||
"intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
|
||||
|
@ -503,9 +526,12 @@
|
|||
"notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}",
|
||||
"notification.admin.sign_up": "{name} έχει εγγραφεί",
|
||||
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί",
|
||||
"notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!",
|
||||
"notification.annual_report.view": "Προβολή #Wrapstodon",
|
||||
"notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου",
|
||||
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου",
|
||||
"notification.follow": "Ο/Η {name} σε ακολούθησε",
|
||||
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> σε ακολούθησαν",
|
||||
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
|
||||
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
|
||||
"notification.label.mention": "Επισήμανση",
|
||||
|
@ -513,6 +539,7 @@
|
|||
"notification.label.private_reply": "Ιδιωτική απάντηση",
|
||||
"notification.label.reply": "Απάντηση",
|
||||
"notification.mention": "Επισήμανση",
|
||||
"notification.mentioned_you": "Ο χρήστης {name} σε επισήμανε",
|
||||
"notification.moderation-warning.learn_more": "Μάθε περισσότερα",
|
||||
"notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού",
|
||||
"notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.",
|
||||
|
@ -563,6 +590,7 @@
|
|||
"notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου",
|
||||
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
|
||||
"notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:",
|
||||
"notifications.column_settings.group": "Ομάδα",
|
||||
"notifications.column_settings.mention": "Επισημάνσεις:",
|
||||
"notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:",
|
||||
"notifications.column_settings.push": "Ειδοποιήσεις Push",
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
||||
"annual_report.summary.most_used_app.most_used_app": "most used app",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag",
|
||||
"annual_report.summary.most_used_hashtag.none": "None",
|
||||
"annual_report.summary.new_posts.new_posts": "new posts",
|
||||
"annual_report.summary.percentile.text": "<topLabel>That puts you in the top</topLabel><percentage></percentage><bottomLabel>of Mastodon users.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",
|
||||
|
|
|
@ -87,6 +87,9 @@
|
|||
"alert.unexpected.title": "Aj!",
|
||||
"alt_text_badge.title": "Alt-teksto",
|
||||
"announcement.announcement": "Anonco",
|
||||
"annual_report.summary.archetype.replier": "La plej societema",
|
||||
"annual_report.summary.followers.followers": "sekvantoj",
|
||||
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
|
||||
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
|
||||
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
|
||||
"attachments_list.unprocessed": "(neprilaborita)",
|
||||
|
@ -510,6 +513,7 @@
|
|||
"notification.admin.report_statuses_other": "{name} raportis {target}",
|
||||
"notification.admin.sign_up": "{name} kreis konton",
|
||||
"notification.admin.sign_up.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} kreis konton",
|
||||
"notification.annual_report.view": "Vidu #Wrapstodon",
|
||||
"notification.favourite": "{name} stelumis vian afiŝon",
|
||||
"notification.favourite.name_and_others_with_link": "{name} kaj <a>{count, plural, one {# alia} other {# aliaj}}</a> ŝatis vian afiŝon",
|
||||
"notification.follow": "{name} eksekvis vin",
|
||||
|
|
|
@ -87,14 +87,23 @@
|
|||
"alert.unexpected.title": "¡Epa!",
|
||||
"alt_text_badge.title": "Texto alternativo",
|
||||
"announcement.announcement": "Anuncio",
|
||||
"annual_report.summary.archetype.booster": "Corrió la voz",
|
||||
"annual_report.summary.archetype.lurker": "El acechador",
|
||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
||||
"annual_report.summary.archetype.pollster": "Estuvo consultando",
|
||||
"annual_report.summary.archetype.replier": "Respondió un montón",
|
||||
"annual_report.summary.followers.followers": "seguidores",
|
||||
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||
"annual_report.summary.followers.total": "{count} en total",
|
||||
"annual_report.summary.here_it_is": "Acá está tu resumen de {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "el mensaje más veces marcado como favorito",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "el mensaje que más adhesiones recibió",
|
||||
"annual_report.summary.highlighted_post.by_replies": "el mensaje que más respuestas recibió",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "la aplicación más usada",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada",
|
||||
"annual_report.summary.new_posts.new_posts": "nuevos mensajes",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en la cima</topLabel><percentage></percentage><bottomLabel>de los usuarios de Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
||||
"attachments_list.unprocessed": "[sin procesar]",
|
||||
"audio.hide": "Ocultar audio",
|
||||
|
@ -517,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} denunció a {target}",
|
||||
"notification.admin.sign_up": "Se registró {name}",
|
||||
"notification.admin.sign_up.name_and_others": "Se registraron {name} y {count, plural, one {# cuenta más} other {# cuentas más}}",
|
||||
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
|
||||
"notification.annual_report.view": "Ver #Wrapstodon",
|
||||
"notification.favourite": "{name} marcó tu mensaje como favorito",
|
||||
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# cuenta más} other {# cuentas más}}</a> marcaron tu mensaje como favorito",
|
||||
"notification.follow": "{name} te empezó a seguir",
|
||||
|
|
|
@ -87,14 +87,23 @@
|
|||
"alert.unexpected.title": "¡Ups!",
|
||||
"alt_text_badge.title": "Texto alternativo",
|
||||
"announcement.announcement": "Anuncio",
|
||||
"annual_report.summary.archetype.booster": "El cazador de tendencias",
|
||||
"annual_report.summary.archetype.lurker": "El acechador",
|
||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
||||
"annual_report.summary.archetype.pollster": "El encuestador",
|
||||
"annual_report.summary.archetype.replier": "El más sociable",
|
||||
"annual_report.summary.followers.followers": "seguidores",
|
||||
"annual_report.summary.followers.total": "{count} en total",
|
||||
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
||||
"attachments_list.unprocessed": "(sin procesar)",
|
||||
"audio.hide": "Ocultar audio",
|
||||
|
@ -517,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} reportó {target}",
|
||||
"notification.admin.sign_up": "{name} se unio",
|
||||
"notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} se registraron",
|
||||
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
|
||||
"notification.annual_report.view": "Ver #Wrapstodon",
|
||||
"notification.favourite": "{name} marcó como favorita tu publicación",
|
||||
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# otro} other {# otros}}</a> marcaron tu publicación como favorita",
|
||||
"notification.follow": "{name} te empezó a seguir",
|
||||
|
|
|
@ -87,14 +87,23 @@
|
|||
"alert.unexpected.title": "¡Ups!",
|
||||
"alt_text_badge.title": "Texto alternativo",
|
||||
"announcement.announcement": "Anuncio",
|
||||
"annual_report.summary.archetype.booster": "El cazador de tendencias",
|
||||
"annual_report.summary.archetype.lurker": "El acechador",
|
||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
||||
"annual_report.summary.archetype.pollster": "El encuestador",
|
||||
"annual_report.summary.archetype.replier": "El más sociable",
|
||||
"annual_report.summary.followers.followers": "seguidores",
|
||||
"annual_report.summary.followers.total": "{count} en total",
|
||||
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
||||
"attachments_list.unprocessed": "(sin procesar)",
|
||||
"audio.hide": "Ocultar audio",
|
||||
|
@ -517,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} informó de {target}",
|
||||
"notification.admin.sign_up": "{name} se registró",
|
||||
"notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# más} other {# más}} se registraron",
|
||||
"notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!",
|
||||
"notification.annual_report.view": "Ver #Wrapstodon",
|
||||
"notification.favourite": "{name} marcó como favorita tu publicación",
|
||||
"notification.favourite.name_and_others_with_link": "{name} y <a>{count, plural, one {# más} other {# más}}</a> marcaron tu publicación como favorita",
|
||||
"notification.follow": "{name} te empezó a seguir",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Ups!",
|
||||
"alt_text_badge.title": "Annar tekstur",
|
||||
"announcement.announcement": "Kunngerð",
|
||||
"annual_report.summary.archetype.booster": "Kuli jagarin",
|
||||
"annual_report.summary.archetype.lurker": "Lúrarin",
|
||||
"annual_report.summary.archetype.oracle": "Oraklið",
|
||||
"annual_report.summary.archetype.pollster": "Spyrjarin",
|
||||
"annual_report.summary.archetype.replier": "Sosiali firvaldurin",
|
||||
"annual_report.summary.followers.followers": "fylgjarar",
|
||||
"annual_report.summary.followers.total": "{count} íalt",
|
||||
"annual_report.summary.here_it_is": "Her er ein samandráttur av {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "mest dámdi postur",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "oftast lyfti postur",
|
||||
"annual_report.summary.highlighted_post.by_replies": "postur við flestum svarum",
|
||||
"annual_report.summary.highlighted_post.possessive": "hjá {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "mest brúkta app",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki",
|
||||
"annual_report.summary.new_posts.new_posts": "nýggir postar",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Tað fær teg í topp</topLabel><percentage></percentage><bottomLabel>av Mastodon brúkarum.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.",
|
||||
"annual_report.summary.thanks": "Takk fyri at tú er partur av Mastodon!",
|
||||
"attachments_list.unprocessed": "(óviðgjørt)",
|
||||
"audio.hide": "Fjal ljóð",
|
||||
"block_modal.remote_users_caveat": "Vit biðja ambætaran {domain} virða tína avgerð. Kortini er eingin vissa um samsvar, av tí at fleiri ambætarar handfara blokkar ymiskt. Almennir postar kunnu framvegis vera sjónligir fyri brúkarar, sum ikki eru innritaðir.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} meldaði {target}",
|
||||
"notification.admin.sign_up": "{name} meldaði seg til",
|
||||
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} teknaðu seg",
|
||||
"notification.annual_report.message": "Títt {year} #Wrapstodon bíðar! Avdúka hæddarpunktini og minniligu løturnar á Mastodon!",
|
||||
"notification.annual_report.view": "Sí #Wrapstodon",
|
||||
"notification.favourite": "{name} dámdi postin hjá tær",
|
||||
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# annar/onnur} other {# onnur}}</a> yndisfrámerktu postin hjá tær",
|
||||
"notification.follow": "{name} fylgdi tær",
|
||||
|
|
|
@ -97,6 +97,8 @@
|
|||
"annual_report.summary.most_used_app.most_used_app": "app que mais usaches",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado",
|
||||
"annual_report.summary.new_posts.new_posts": "novas publicacións",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.thanks": "Grazas por ser parte de Mastodon!",
|
||||
"attachments_list.unprocessed": "(sen procesar)",
|
||||
"audio.hide": "Agochar audio",
|
||||
"block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "אופס!",
|
||||
"alt_text_badge.title": "כיתוב חלופי",
|
||||
"announcement.announcement": "הכרזה",
|
||||
"annual_report.summary.archetype.booster": "ההד-וניסט(ית)",
|
||||
"annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה",
|
||||
"annual_report.summary.archetype.oracle": "כבוד הרב.ה",
|
||||
"annual_report.summary.archetype.pollster": "הסקרן.ית",
|
||||
"annual_report.summary.archetype.replier": "הפרפר.ית החברתי.ת",
|
||||
"annual_report.summary.followers.followers": "עוקבים",
|
||||
"annual_report.summary.followers.total": "{count} בסך הכל",
|
||||
"annual_report.summary.here_it_is": "והנה סיכום {year} שלך:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "התות הכי מחובב",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "התות הכי מהודהד",
|
||||
"annual_report.summary.highlighted_post.by_replies": "התות עם מספר התשובות הגבוה ביותר",
|
||||
"annual_report.summary.highlighted_post.possessive": "של {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר",
|
||||
"annual_report.summary.new_posts.new_posts": "הודעות חדשות",
|
||||
"annual_report.summary.percentile.text": "<topLabel>ממקם אותך באחוזון </topLabel><percentage></percentage><bottomLabel>של משמשי מסטודון.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.",
|
||||
"annual_report.summary.thanks": "תודה על היותך חלק ממסטודון!",
|
||||
"attachments_list.unprocessed": "(לא מעובד)",
|
||||
"audio.hide": "השתק",
|
||||
"block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} דיווח.ה על {target}",
|
||||
"notification.admin.sign_up": "{name} נרשמו",
|
||||
"notification.admin.sign_up.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} נרשמו",
|
||||
"notification.annual_report.message": "ה- #סיכומודון שלך לשנת {year} מחכה! גלו את רגעי השיא והזכרונות ממסטודון!",
|
||||
"notification.annual_report.view": "לצפייה ב- #סיכומודון",
|
||||
"notification.favourite": "הודעתך חובבה על ידי {name}",
|
||||
"notification.favourite.name_and_others_with_link": "{name} ועוד <a>{count, plural,one {אחד נוסף}other {# נוספים}}</a> חיבבו את הודעתך",
|
||||
"notification.follow": "{name} במעקב אחרייך",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Hoppá!",
|
||||
"alt_text_badge.title": "Helyettesítő szöveg",
|
||||
"announcement.announcement": "Közlemény",
|
||||
"annual_report.summary.archetype.booster": "A cool-vadász",
|
||||
"annual_report.summary.archetype.lurker": "A settenkedő",
|
||||
"annual_report.summary.archetype.oracle": "Az orákulum",
|
||||
"annual_report.summary.archetype.pollster": "A közvélemény-kutató",
|
||||
"annual_report.summary.archetype.replier": "A társasági pillangó",
|
||||
"annual_report.summary.followers.followers": "követő",
|
||||
"annual_report.summary.followers.total": "{count} összesen",
|
||||
"annual_report.summary.here_it_is": "Itt a {year}. év értékelése:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "legkedvencebb bejegyzés",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "legtöbbet megtolt bejegyzés",
|
||||
"annual_report.summary.highlighted_post.by_replies": "bejegyzés a legtöbb válasszal",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name} fióktól",
|
||||
"annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag",
|
||||
"annual_report.summary.new_posts.new_posts": "új bejegyzés",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Ezzel a</topLabel><percentage></percentage><bottomLabel>csúcs Mastodon felhasználó között vagy.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.",
|
||||
"annual_report.summary.thanks": "Kösz, hogy a Mastodon része vagy!",
|
||||
"attachments_list.unprocessed": "(feldolgozatlan)",
|
||||
"audio.hide": "Hang elrejtése",
|
||||
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} jelentette: {target}",
|
||||
"notification.admin.sign_up": "{name} regisztrált",
|
||||
"notification.admin.sign_up.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} regisztrált",
|
||||
"notification.annual_report.message": "Vár a {year}. év #Wrapstodon jelentése! Fedd fel az éved jelentős eseményeit és emlékezetes pillanatait a Mastodonon!",
|
||||
"notification.annual_report.view": "#Wrapstodon Megtekintése",
|
||||
"notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet",
|
||||
"notification.favourite.name_and_others_with_link": "{name} és <a>{count, plural, one {# másik} other {# másik}}</a> kedvencnek jelölte a bejegyzésedet",
|
||||
"notification.follow": "{name} követ téged",
|
||||
|
|
|
@ -87,6 +87,20 @@
|
|||
"alert.unexpected.title": "Oops!",
|
||||
"alt_text_badge.title": "Testo alternativo",
|
||||
"announcement.announcement": "Annuncio",
|
||||
"annual_report.summary.archetype.oracle": "L'oracolo",
|
||||
"annual_report.summary.followers.followers": "seguaci",
|
||||
"annual_report.summary.followers.total": "{count} in totale",
|
||||
"annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "il post più apprezzato",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "il post più condiviso",
|
||||
"annual_report.summary.highlighted_post.by_replies": "il post con più risposte",
|
||||
"annual_report.summary.highlighted_post.possessive": "di {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato",
|
||||
"annual_report.summary.new_posts.new_posts": "nuovi post",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Questo ti colloca tra il</topLabel><percentage></percentage><bottomLabel>dei migliori utenti Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.",
|
||||
"annual_report.summary.thanks": "Grazie per far parte di Mastodon!",
|
||||
"attachments_list.unprocessed": "(non elaborato)",
|
||||
"audio.hide": "Nascondi audio",
|
||||
"block_modal.remote_users_caveat": "Chiederemo al server {domain} di rispettare la tua decisione. Tuttavia, la conformità non è garantita poiché alcuni server potrebbero gestire i blocchi in modo diverso. I post pubblici potrebbero essere ancora visibili agli utenti che non hanno effettuato l'accesso.",
|
||||
|
@ -508,6 +522,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} ha segnalato {target}",
|
||||
"notification.admin.sign_up": "{name} si è iscritto",
|
||||
"notification.admin.sign_up.name_and_others": "Si sono iscritti: {name} e {count, plural, one {# altro utente} other {altri # utenti}}",
|
||||
"notification.annual_report.message": "Il tuo #Wrapstodon {year} ti aspetta! Scopri i momenti salienti e memorabili del tuo anno su Mastodon!",
|
||||
"notification.annual_report.view": "Visualizza #Wrapstodon",
|
||||
"notification.favourite": "{name} ha aggiunto il tuo post ai preferiti",
|
||||
"notification.favourite.name_and_others_with_link": "{name} e <a>{count, plural, one {# altro} other {altri #}}</a> hanno aggiunto il tuo post ai preferiti",
|
||||
"notification.follow": "{name} ha iniziato a seguirti",
|
||||
|
|
|
@ -99,6 +99,24 @@
|
|||
"alert.unexpected.title": "エラー!",
|
||||
"alt_text_badge.title": "代替テキスト",
|
||||
"announcement.announcement": "お知らせ",
|
||||
"annual_report.summary.archetype.booster": "トレンドハンター",
|
||||
"annual_report.summary.archetype.lurker": "ROM専",
|
||||
"annual_report.summary.archetype.oracle": "予言者",
|
||||
"annual_report.summary.archetype.pollster": "調査員",
|
||||
"annual_report.summary.archetype.replier": "社交家",
|
||||
"annual_report.summary.followers.followers": "フォロワー",
|
||||
"annual_report.summary.followers.total": "合計{count}",
|
||||
"annual_report.summary.here_it_is": "こちらがあなたの{year}年の振り返りです",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "最もお気に入りされた投稿",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "最もブーストされた投稿",
|
||||
"annual_report.summary.highlighted_post.by_replies": "最も返信が多かった投稿",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}の",
|
||||
"annual_report.summary.most_used_app.most_used_app": "最も使用されているアプリ",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最も使用されたハッシュタグ",
|
||||
"annual_report.summary.new_posts.new_posts": "新しい投稿",
|
||||
"annual_report.summary.percentile.text": "<topLabel>それにより、あなたは上位に位置しています。</topLabel><percentage></percentage><bottomLabel>Mastodonユーザーの中で。</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "バー二ーには秘密にしておくよ。",
|
||||
"annual_report.summary.thanks": "Mastodonの一員になってくれてありがとう!",
|
||||
"antennas.account.add": "アンテナに追加",
|
||||
"antennas.account.remove": "アンテナから外す",
|
||||
"antennas.accounts": "{count} のアカウント",
|
||||
|
@ -612,6 +630,8 @@
|
|||
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
|
||||
"notification.admin.sign_up": "{name}さんがサインアップしました",
|
||||
"notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました",
|
||||
"notification.annual_report.message": "「あなたの{year}年の#Wrapstodonが待っています!Mastodonであなたの年のハイライトや思い出の瞬間を公開しましょう!」と訳せます。",
|
||||
"notification.annual_report.view": "#Wrapstodon を表示",
|
||||
"notification.emoji_reaction": "{name}さんがあなたの投稿に絵文字をつけました",
|
||||
"notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました",
|
||||
"notification.favourite": "{name}さんがお気に入りしました",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "앗!",
|
||||
"alt_text_badge.title": "대체 문구",
|
||||
"announcement.announcement": "공지사항",
|
||||
"annual_report.summary.archetype.booster": "연쇄부스트마",
|
||||
"annual_report.summary.archetype.lurker": "은둔자",
|
||||
"annual_report.summary.archetype.oracle": "예언자",
|
||||
"annual_report.summary.archetype.pollster": "여론조사원",
|
||||
"annual_report.summary.archetype.replier": "인싸",
|
||||
"annual_report.summary.followers.followers": "팔로워",
|
||||
"annual_report.summary.followers.total": "총 {count}",
|
||||
"annual_report.summary.here_it_is": "{year}년 결산입니다:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "가장 많은 좋아요를 받은 게시물",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "가장 많이 부스트된 게시물",
|
||||
"annual_report.summary.highlighted_post.by_replies": "가장 많은 답글을 받은 게시물",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name} 님의",
|
||||
"annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그",
|
||||
"annual_report.summary.new_posts.new_posts": "새 게시물",
|
||||
"annual_report.summary.percentile.text": "<topLabel>마스토돈 사용자의 상위</topLabel><percentage></percentage><bottomLabel>입니다.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "엄마한테 말 안 할게요.",
|
||||
"annual_report.summary.thanks": "마스토돈과 함께 해주셔서 감사합니다!",
|
||||
"attachments_list.unprocessed": "(처리 안 됨)",
|
||||
"audio.hide": "소리 숨기기",
|
||||
"block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다",
|
||||
"notification.admin.sign_up": "{name} 님이 가입했습니다",
|
||||
"notification.admin.sign_up.name_and_others": "{name} 외 {count, plural, other {# 명}}이 가입했습니다",
|
||||
"notification.annual_report.message": "{year} #Wrapstodon 이 기다리고 있습니다! 올 해 마스토돈에서 있었던 최고의 순간과 기억들을 열어보세요!",
|
||||
"notification.annual_report.view": "#Wrapstodon 보기",
|
||||
"notification.favourite": "{name} 님이 내 게시물을 좋아합니다",
|
||||
"notification.favourite.name_and_others_with_link": "{name} 외 <a>{count, plural, other {# 명}}</a>이 내 게시물을 좋아합니다",
|
||||
"notification.follow": "{name} 님이 나를 팔로우했습니다",
|
||||
|
|
|
@ -85,7 +85,11 @@
|
|||
"alert.rate_limited.title": "Limite de tentativas",
|
||||
"alert.unexpected.message": "Ocorreu um erro inesperado.",
|
||||
"alert.unexpected.title": "Bolas!",
|
||||
"alt_text_badge.title": "Texto alternativo",
|
||||
"announcement.announcement": "Anúncio",
|
||||
"annual_report.summary.followers.total": "{count} total",
|
||||
"annual_report.summary.here_it_is": "Aqui está o seu {year} em revisão:",
|
||||
"annual_report.summary.new_posts.new_posts": "novas publicações",
|
||||
"attachments_list.unprocessed": "(não processado)",
|
||||
"audio.hide": "Ocultar áudio",
|
||||
"block_modal.remote_users_caveat": "Vamos pedir ao servidor {domain} para respeitar a sua decisão. No entanto, não é garantido o seu cumprimento, uma vez que alguns servidores podem tratar os bloqueios de forma diferente. As mensagens públicas podem continuar a ser visíveis para utilizadores não autenticados.",
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
"account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
|
||||
"account.go_to_profile": "Перейти к профилю",
|
||||
"account.hide_reblogs": "Скрыть продвижения от @{name}",
|
||||
"account.in_memoriam": "В Памяти.",
|
||||
"account.in_memoriam": "Вечная память.",
|
||||
"account.joined_short": "Присоединился",
|
||||
"account.languages": "Изменить языки подписки",
|
||||
"account.link_verified_on": "Владение этой ссылкой было проверено {date}",
|
||||
|
@ -62,13 +62,13 @@
|
|||
"account.requested_follow": "{name} отправил(а) вам запрос на подписку",
|
||||
"account.share": "Поделиться профилем @{name}",
|
||||
"account.show_reblogs": "Показывать продвижения от @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {# пост} few {# поста} many {# постов} other {# постов}}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}",
|
||||
"account.unblock": "Разблокировать @{name}",
|
||||
"account.unblock_domain": "Разблокировать {domain}",
|
||||
"account.unblock_short": "Разблокировать",
|
||||
"account.unendorse": "Не рекомендовать в профиле",
|
||||
"account.unfollow": "Отписаться",
|
||||
"account.unmute": "Убрать {name} из игнорируемых",
|
||||
"account.unmute": "Перестать игнорировать @{name}",
|
||||
"account.unmute_notifications_short": "Включить уведомления",
|
||||
"account.unmute_short": "Не игнорировать",
|
||||
"account_note.placeholder": "Текст заметки",
|
||||
|
@ -87,6 +87,20 @@
|
|||
"alert.unexpected.title": "Ой!",
|
||||
"alt_text_badge.title": "Альтернативный текст",
|
||||
"announcement.announcement": "Объявление",
|
||||
"annual_report.summary.archetype.booster": "Репостер",
|
||||
"annual_report.summary.archetype.lurker": "Молчун",
|
||||
"annual_report.summary.archetype.pollster": "Опросчик",
|
||||
"annual_report.summary.archetype.replier": "Душа компании",
|
||||
"annual_report.summary.followers.followers": "подписчиков",
|
||||
"annual_report.summary.here_it_is": "Вот ваши итоги {year} года:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "пост с наибольшим количеством звёздочек",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "пост с наибольшим количеством продвижений",
|
||||
"annual_report.summary.highlighted_post.by_replies": "пост с наибольшим количеством ответов",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хэштег",
|
||||
"annual_report.summary.new_posts.new_posts": "новых постов",
|
||||
"annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!",
|
||||
"attachments_list.unprocessed": "(не обработан)",
|
||||
"audio.hide": "Скрыть аудио",
|
||||
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение. Однако, соблюдение требований не гарантировано, поскольку некоторые серверы могут работать с блокировками по-разному. Публичные записи по-прежнему могут быть видны неавторизованным пользователям.",
|
||||
|
@ -146,10 +160,10 @@
|
|||
"community.column_settings.remote_only": "Только удалённые",
|
||||
"compose.language.change": "Сменить язык",
|
||||
"compose.language.search": "Поиск языков...",
|
||||
"compose.published.body": "Запись опубликована.",
|
||||
"compose.published.body": "Пост опубликован.",
|
||||
"compose.published.open": "Открыть",
|
||||
"compose.saved.body": "Запись сохранена.",
|
||||
"compose_form.direct_message_warning_learn_more": "Подробнее",
|
||||
"compose.saved.body": "Пост отредактирован.",
|
||||
"compose_form.direct_message_warning_learn_more": "Узнать больше",
|
||||
"compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.",
|
||||
"compose_form.hashtag_warning": "Этот пост не будет виден ни под одним из хэштегов, так как он не публичный. Только публичные посты можно найти по хэштегу.",
|
||||
"compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.",
|
||||
|
@ -161,14 +175,14 @@
|
|||
"compose_form.poll.single": "Один вариант ответа",
|
||||
"compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов",
|
||||
"compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа",
|
||||
"compose_form.poll.type": "Стиль",
|
||||
"compose_form.poll.type": "Тип",
|
||||
"compose_form.publish": "Опубликовать",
|
||||
"compose_form.publish_form": "Опубликовать",
|
||||
"compose_form.reply": "Ответить",
|
||||
"compose_form.save_changes": "Сохранить",
|
||||
"compose_form.spoiler.marked": "Текст скрыт за предупреждением",
|
||||
"compose_form.spoiler.unmarked": "Текст не скрыт",
|
||||
"compose_form.spoiler_placeholder": "Предупреждение о контенте (опционально)",
|
||||
"compose_form.spoiler_placeholder": "Предупреждение о содержимом (необязательно)",
|
||||
"confirmation_modal.cancel": "Отмена",
|
||||
"confirmations.block.confirm": "Заблокировать",
|
||||
"confirmations.delete.confirm": "Удалить",
|
||||
|
@ -178,17 +192,17 @@
|
|||
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
|
||||
"confirmations.delete_list.title": "Удалить список?",
|
||||
"confirmations.discard_edit_media.confirm": "Отменить",
|
||||
"confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?",
|
||||
"confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?",
|
||||
"confirmations.edit.confirm": "Редактировать",
|
||||
"confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?",
|
||||
"confirmations.edit.title": "Перепишем сообщение?",
|
||||
"confirmations.edit.message": "При редактировании, текст набираемого поста будет очищен. Продолжить?",
|
||||
"confirmations.edit.title": "Переписать сообщение?",
|
||||
"confirmations.logout.confirm": "Выйти",
|
||||
"confirmations.logout.message": "Вы уверены, что хотите выйти?",
|
||||
"confirmations.logout.title": "Выйти?",
|
||||
"confirmations.mute.confirm": "Игнорировать",
|
||||
"confirmations.redraft.confirm": "Удалить и исправить",
|
||||
"confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут удалены.",
|
||||
"confirmations.redraft.title": "Удалим и исправим пост?",
|
||||
"confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут потеряны.",
|
||||
"confirmations.redraft.title": "Создать пост заново?",
|
||||
"confirmations.reply.confirm": "Ответить",
|
||||
"confirmations.reply.message": "При ответе, текст набираемого поста будет очищен. Продолжить?",
|
||||
"confirmations.reply.title": "Перепишем пост?",
|
||||
|
@ -243,7 +257,7 @@
|
|||
"embed.preview": "Так это будет выглядеть:",
|
||||
"emoji_button.activity": "Занятия",
|
||||
"emoji_button.clear": "Очистить",
|
||||
"emoji_button.custom": "С этого узла",
|
||||
"emoji_button.custom": "С этого сервера",
|
||||
"emoji_button.flags": "Флаги",
|
||||
"emoji_button.food": "Еда и напитки",
|
||||
"emoji_button.label": "Вставить эмодзи",
|
||||
|
@ -350,12 +364,12 @@
|
|||
"hashtag.column_settings.tag_mode.any": "Любой из списка",
|
||||
"hashtag.column_settings.tag_mode.none": "Ни один из списка",
|
||||
"hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки",
|
||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} участник} few {{counter} участников} many {{counter} участников} other {{counter} участников}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} сообщение} few {{counter} сообщения} many {{counter} сообщения} other {{counter} сообщения}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} сообщение} other {{counter} сообщений}} сегодня",
|
||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} пользователь} few {{counter} пользователя} other {{counter} пользователей}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}} сегодня",
|
||||
"hashtag.follow": "Подписаться на новые посты",
|
||||
"hashtag.unfollow": "Отписаться",
|
||||
"hashtags.and_other": "...и {count, plural, other {# ещё}}",
|
||||
"hashtags.and_other": "…и {count, plural, other {ещё #}}",
|
||||
"hints.profiles.followers_may_be_missing": "Подписчики у этого профиля могут отсутствовать.",
|
||||
"hints.profiles.follows_may_be_missing": "Фолловеры для этого профиля могут отсутствовать.",
|
||||
"hints.profiles.posts_may_be_missing": "Некоторые сообщения из этого профиля могут отсутствовать.",
|
||||
|
@ -404,15 +418,15 @@
|
|||
"intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}",
|
||||
"keyboard_shortcuts.back": "перейти назад",
|
||||
"keyboard_shortcuts.blocked": "чтобы открыть список заблокированных",
|
||||
"keyboard_shortcuts.boost": "Репостнуть",
|
||||
"keyboard_shortcuts.boost": "продвинуть пост",
|
||||
"keyboard_shortcuts.column": "фокус на одном из столбцов",
|
||||
"keyboard_shortcuts.compose": "фокус на поле ввода",
|
||||
"keyboard_shortcuts.description": "Описание",
|
||||
"keyboard_shortcuts.direct": "чтобы открыть столбец личных упоминаний",
|
||||
"keyboard_shortcuts.down": "вниз по списку",
|
||||
"keyboard_shortcuts.enter": "открыть пост",
|
||||
"keyboard_shortcuts.favourite": "Добавить пост в избранное",
|
||||
"keyboard_shortcuts.favourites": "Открыть «Избранное»",
|
||||
"keyboard_shortcuts.favourite": "добавить пост в избранное",
|
||||
"keyboard_shortcuts.favourites": "открыть «Избранные»",
|
||||
"keyboard_shortcuts.federated": "перейти к глобальной ленте",
|
||||
"keyboard_shortcuts.heading": "Сочетания клавиш",
|
||||
"keyboard_shortcuts.home": "перейти к домашней ленте",
|
||||
|
@ -420,7 +434,7 @@
|
|||
"keyboard_shortcuts.legend": "показать это окно",
|
||||
"keyboard_shortcuts.local": "перейти к локальной ленте",
|
||||
"keyboard_shortcuts.mention": "упомянуть автора поста",
|
||||
"keyboard_shortcuts.muted": "Открыть список игнорируемых",
|
||||
"keyboard_shortcuts.muted": "открыть список игнорируемых",
|
||||
"keyboard_shortcuts.my_profile": "перейти к своему профилю",
|
||||
"keyboard_shortcuts.notifications": "перейти к уведомлениям",
|
||||
"keyboard_shortcuts.open_media": "открыть вложение",
|
||||
|
@ -432,7 +446,7 @@
|
|||
"keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании",
|
||||
"keyboard_shortcuts.start": "Перейти к разделу \"Начать\"",
|
||||
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Показать/скрыть медиафайлы",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы",
|
||||
"keyboard_shortcuts.toot": "начать писать новый пост",
|
||||
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
|
||||
"keyboard_shortcuts.up": "вверх по списку",
|
||||
|
@ -470,12 +484,12 @@
|
|||
"mute_modal.show_options": "Показать опции",
|
||||
"mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.",
|
||||
"mute_modal.they_wont_know": "Они не будут знать, что их заглушили.",
|
||||
"mute_modal.title": "Заткнуть пользователя?",
|
||||
"mute_modal.title": "Заглушить пользователя?",
|
||||
"mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.",
|
||||
"mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.",
|
||||
"navigation_bar.about": "О проекте",
|
||||
"navigation_bar.administration": "Администрация",
|
||||
"navigation_bar.advanced_interface": "Включить многоколоночный интерфейс",
|
||||
"navigation_bar.administration": "Администрирование",
|
||||
"navigation_bar.advanced_interface": "Открыть в многоколоночном интерфейсе",
|
||||
"navigation_bar.blocks": "Заблокированные пользователи",
|
||||
"navigation_bar.bookmarks": "Закладки",
|
||||
"navigation_bar.community_timeline": "Локальная лента",
|
||||
|
@ -501,27 +515,29 @@
|
|||
"navigation_bar.search": "Поиск",
|
||||
"navigation_bar.security": "Безопасность",
|
||||
"not_signed_in_indicator.not_signed_in": "Вам нужно войти, чтобы иметь доступ к этому ресурсу.",
|
||||
"notification.admin.report": "{name} сообщил о {target}",
|
||||
"notification.admin.report_account": "{name} сообщил {count, plural, one {один пост} other {# постов}} от {target} для {category}",
|
||||
"notification.admin.report_account_other": "{name} сообщил {count, plural, one {одно сообщение} other {# сообщений}} от {target}",
|
||||
"notification.admin.report_statuses": "{name} сообщил {target} для {category}",
|
||||
"notification.admin.report_statuses_other": "{name} сообщает {target}",
|
||||
"notification.admin.sign_up": "{name} зарегистрирован",
|
||||
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались",
|
||||
"notification.admin.report": "{name} пожаловался на {target}",
|
||||
"notification.admin.report_account": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target} по причине: {category}",
|
||||
"notification.admin.report_account_other": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target}",
|
||||
"notification.admin.report_statuses": "{name} пожаловался на {target} по причине: {category}",
|
||||
"notification.admin.report_statuses_other": "{name} пожаловался на {target}",
|
||||
"notification.admin.sign_up": "{name} зарегистрировался",
|
||||
"notification.admin.sign_up.name_and_others": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} зарегистрировались",
|
||||
"notification.annual_report.message": "#Wrapstodon за {year} год ждёт вас! Откройте для себя итоги и памятные моменты этого года в Mastodon!",
|
||||
"notification.annual_report.view": "Перейти к #Wrapstodon",
|
||||
"notification.favourite": "{name} добавил(а) ваш пост в избранное",
|
||||
"notification.favourite.name_and_others_with_link": "{name} и ещё <a>{count, plural, one {# пользователь} few {# пользователя} other {# пользователей}}</a> добавили ваш пост в избранное",
|
||||
"notification.follow": "{name} подписался (-лась) на вас",
|
||||
"notification.follow.name_and_others": "{name} и <a>{count, plural, one {# other} few {# others} many {# others} other {# others}}</a> подписались на вас",
|
||||
"notification.follow.name_and_others": "{name} и ещё <a>{count, plural, one {# пользователь} few {# пользователя} other {# пользователей}}</a> подписались на вас",
|
||||
"notification.follow_request": "{name} отправил запрос на подписку",
|
||||
"notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас",
|
||||
"notification.label.mention": "Упоминание",
|
||||
"notification.label.private_mention": "Частное упоминание",
|
||||
"notification.label.private_reply": "Частный ответ",
|
||||
"notification.label.reply": "Ответить",
|
||||
"notification.label.private_mention": "Личное упоминание",
|
||||
"notification.label.private_reply": "Приватный ответ",
|
||||
"notification.label.reply": "Ответ",
|
||||
"notification.mention": "Упоминание",
|
||||
"notification.mentioned_you": "{name} упоминает вас",
|
||||
"notification.mentioned_you": "{name} упомянул(а) вас",
|
||||
"notification.moderation-warning.learn_more": "Узнать больше",
|
||||
"notification.moderation_warning": "Вы получили предупреждение от модерации",
|
||||
"notification.moderation_warning": "Модераторы вынесли вам предупреждение",
|
||||
"notification.moderation_warning.action_delete_statuses": "Некоторые из ваших публикаций были удалены.",
|
||||
"notification.moderation_warning.action_disable": "Ваша учётная запись была отключена.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некоторые из ваших сообщений были отмечены как деликатные.",
|
||||
|
@ -561,16 +577,16 @@
|
|||
"notification_requests.view": "Просмотр уведомлений",
|
||||
"notifications.clear": "Очистить уведомления",
|
||||
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
|
||||
"notifications.clear_title": "Сбросить уведомления?",
|
||||
"notifications.clear_title": "Очистить уведомления?",
|
||||
"notifications.column_settings.admin.report": "Новые жалобы:",
|
||||
"notifications.column_settings.admin.sign_up": "Новые регистрации:",
|
||||
"notifications.column_settings.alert": "Уведомления на рабочем столе",
|
||||
"notifications.column_settings.favourite": "Избранные:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Отображать все категории",
|
||||
"notifications.column_settings.favourite": "Ваш пост добавили в избранные:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Показать все категории",
|
||||
"notifications.column_settings.filter_bar.category": "Панель сортировки",
|
||||
"notifications.column_settings.follow": "У вас новый подписчик:",
|
||||
"notifications.column_settings.follow_request": "Новые запросы на подписку:",
|
||||
"notifications.column_settings.group": "Группа",
|
||||
"notifications.column_settings.group": "Группировать",
|
||||
"notifications.column_settings.mention": "Вас упомянули в посте:",
|
||||
"notifications.column_settings.poll": "Опрос, в котором вы приняли участие, завершился:",
|
||||
"notifications.column_settings.push": "Пуш-уведомления",
|
||||
|
@ -590,27 +606,27 @@
|
|||
"notifications.filter.statuses": "Обновления от людей, на которых вы подписаны",
|
||||
"notifications.grant_permission": "Предоставить разрешение.",
|
||||
"notifications.group": "{count} уведомл.",
|
||||
"notifications.mark_as_read": "Отмечать все уведомления прочитанными",
|
||||
"notifications.mark_as_read": "Отметить все уведомления прочитанными",
|
||||
"notifications.permission_denied": "Уведомления на рабочем столе недоступны, так как вы запретили их отправку в браузере. Проверьте настройки для сайта, чтобы включить их обратно.",
|
||||
"notifications.permission_denied_alert": "Уведомления на рабочем столе недоступны, так как вы ранее отклонили запрос на их отправку.",
|
||||
"notifications.permission_required": "Чтобы включить уведомления на рабочем столе, необходимо разрешить их в браузере.",
|
||||
"notifications.policy.accept": "Принять",
|
||||
"notifications.policy.accept_hint": "Показать в уведомлениях",
|
||||
"notifications.policy.drop": "Игнорируем",
|
||||
"notifications.policy.drop_hint": "Отправить в пустоту, чтобы никогда больше не увидеть",
|
||||
"notifications.policy.filter": "Фильтр",
|
||||
"notifications.policy.filter_hint": "Отправка в папку фильтрованных уведомлений",
|
||||
"notifications.policy.filter_limited_accounts_hint": "Ограничено модераторами сервера",
|
||||
"notifications.policy.filter_limited_accounts_title": "Модерируемые аккаунты",
|
||||
"notifications.policy.filter_new_accounts.hint": "Создано в течение последних {days, plural, one {один день} few {# дней} many {# дней} other {# дня}}",
|
||||
"notifications.policy.accept": "Принимать",
|
||||
"notifications.policy.accept_hint": "Показывать в уведомлениях",
|
||||
"notifications.policy.drop": "Игнорировать",
|
||||
"notifications.policy.drop_hint": "Отправлять в пустоту, чтобы никогда больше не увидеть",
|
||||
"notifications.policy.filter": "Фильтровать",
|
||||
"notifications.policy.filter_hint": "Отправлять в раздел отфильтрованных уведомлений",
|
||||
"notifications.policy.filter_limited_accounts_hint": "Ограниченные модераторами сервера",
|
||||
"notifications.policy.filter_limited_accounts_title": "Модерируемые учётные записи",
|
||||
"notifications.policy.filter_new_accounts.hint": "Созданные в течение {days, plural, one {последнего # дня} other {последних # дней}}",
|
||||
"notifications.policy.filter_new_accounts_title": "Новые учётные записи",
|
||||
"notifications.policy.filter_not_followers_hint": "Включая людей, которые подписаны на вас меньше чем {days, plural, one {# день} few {# дня} other {# дней}}",
|
||||
"notifications.policy.filter_not_followers_title": "Люди, не подписанные на вас",
|
||||
"notifications.policy.filter_not_following_hint": "Пока вы не одобрите их вручную",
|
||||
"notifications.policy.filter_not_following_title": "Люди, на которых вы не подписаны",
|
||||
"notifications.policy.filter_private_mentions_hint": "Фильтруется, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя",
|
||||
"notifications.policy.filter_private_mentions_hint": "Фильтруются, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя",
|
||||
"notifications.policy.filter_private_mentions_title": "Нежелательные личные упоминания",
|
||||
"notifications.policy.title": "………Управлять уведомлениями от…",
|
||||
"notifications.policy.title": "Управление уведомлениями",
|
||||
"notifications_permission_banner.enable": "Включить уведомления",
|
||||
"notifications_permission_banner.how_to_control": "Получайте уведомления даже когда Mastodon закрыт, включив уведомления на рабочем столе. А чтобы лишний шум не отвлекал, вы можете настроить какие уведомления вы хотите получать, нажав на кнопку {icon} выше.",
|
||||
"notifications_permission_banner.title": "Будьте в курсе происходящего",
|
||||
|
@ -679,7 +695,7 @@
|
|||
"privacy_policy.title": "Политика конфиденциальности",
|
||||
"recommended": "Рекомендуется",
|
||||
"refresh": "Обновить",
|
||||
"regeneration_indicator.label": "Грузим…",
|
||||
"regeneration_indicator.label": "Загрузка…",
|
||||
"regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!",
|
||||
"relative_time.days": "{number} д",
|
||||
"relative_time.full.days": "{number, plural, one {# день} many {# дней} other {# дня}} назад",
|
||||
|
@ -692,15 +708,15 @@
|
|||
"relative_time.minutes": "{number} мин",
|
||||
"relative_time.seconds": "{number} с",
|
||||
"relative_time.today": "сегодня",
|
||||
"reply_indicator.attachments": "{count, plural, one {# вложение} other {# вложения}}",
|
||||
"reply_indicator.attachments": "{count, plural, one {# вложение} few {# вложения} other {# вложений}}",
|
||||
"reply_indicator.cancel": "Отмена",
|
||||
"reply_indicator.poll": "Опрос",
|
||||
"report.block": "Заблокировать",
|
||||
"report.block_explanation": "Вы перестанете видеть посты этого пользователя, и он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять, что вы заблокировали его/её.",
|
||||
"report.categories.legal": "Правовая информация",
|
||||
"report.categories.legal": "Нарушение закона",
|
||||
"report.categories.other": "Другое",
|
||||
"report.categories.spam": "Спам",
|
||||
"report.categories.violation": "Содержимое нарушает одно или несколько правил узла",
|
||||
"report.categories.violation": "Содержимое нарушает одно или несколько правил сервера",
|
||||
"report.category.subtitle": "Выберите наиболее подходящее",
|
||||
"report.category.title": "Расскажите нам, что не так с {type}",
|
||||
"report.category.title_account": "этим профилем",
|
||||
|
@ -771,32 +787,32 @@
|
|||
"server_banner.about_active_users": "Люди, заходившие на этот сервер за последние 30 дней (ежемесячные активные пользователи)",
|
||||
"server_banner.active_users": "активные пользователи",
|
||||
"server_banner.administered_by": "Управляется:",
|
||||
"server_banner.is_one_of_many": "{domain} - это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в fediverse.",
|
||||
"server_banner.is_one_of_many": "{domain} — это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в сети Fediverse.",
|
||||
"server_banner.server_stats": "Статистика сервера:",
|
||||
"sign_in_banner.create_account": "Зарегистрироваться",
|
||||
"sign_in_banner.follow_anyone": "Следите за любым человеком в федеральной вселенной и смотрите все в хронологическом порядке. Никаких алгоритмов, рекламы или клик бейта.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon - лучший способ быть в курсе всего происходящего.",
|
||||
"sign_in_banner.follow_anyone": "Подписывайтесь на кого угодно в федивёрсе и смотрите ленту в хронологическом порядке. Никаких алгоритмов, рекламы или кликбейта.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon — лучший способ быть в курсе всего происходящего.",
|
||||
"sign_in_banner.sign_in": "Войти",
|
||||
"sign_in_banner.sso_redirect": "Войдите или Зарегистрируйтесь",
|
||||
"status.admin_account": "Открыть интерфейс модератора для @{name}",
|
||||
"status.admin_domain": "Открыть интерфейс модерации {domain}",
|
||||
"status.admin_domain": "Открыть интерфейс модератора для {domain}",
|
||||
"status.admin_status": "Открыть этот пост в интерфейсе модератора",
|
||||
"status.block": "Заблокировать @{name}",
|
||||
"status.bookmark": "Сохранить в закладки",
|
||||
"status.bookmark": "Добавить в закладки",
|
||||
"status.cancel_reblog_private": "Не продвигать",
|
||||
"status.cannot_reblog": "Этот пост не может быть продвинут",
|
||||
"status.continued_thread": "Продолжение темы",
|
||||
"status.copy": "Скопировать ссылку на пост",
|
||||
"status.delete": "Удалить",
|
||||
"status.detailed_status": "Подробный просмотр обсуждения",
|
||||
"status.direct": "Лично упоминать @{name}",
|
||||
"status.direct_indicator": "Личные упоминания",
|
||||
"status.direct": "Упомянуть @{name} лично",
|
||||
"status.direct_indicator": "Личное упоминание",
|
||||
"status.edit": "Изменить",
|
||||
"status.edited": "Дата последнего изменения: {date}",
|
||||
"status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}",
|
||||
"status.embed": "Получить код для встраивания",
|
||||
"status.favourite": "Избранное",
|
||||
"status.favourites": "{count, plural, one {в избранном} other {в избранном}}",
|
||||
"status.favourite": "Добавить в избранное",
|
||||
"status.favourites": "{count, plural, other {в избранном}}",
|
||||
"status.filter": "Фильтровать этот пост",
|
||||
"status.history.created": "{name} создал {date}",
|
||||
"status.history.edited": "{name} отредактировал(а) {date}",
|
||||
|
@ -829,13 +845,13 @@
|
|||
"status.show_less_all": "Свернуть все спойлеры в ветке",
|
||||
"status.show_more_all": "Развернуть все спойлеры в ветке",
|
||||
"status.show_original": "Показать оригинал",
|
||||
"status.title.with_attachments": "{user} размещено {attachmentCount, plural, one {вложение} other {{attachmentCount} вложений}}",
|
||||
"status.title.with_attachments": "{user} опубликовал {attachmentCount, plural, one {{attachmentCount} вложение} few {{attachmentCount} вложения} other {{attachmentCount} вложений}}",
|
||||
"status.translate": "Перевод",
|
||||
"status.translated_from_with": "Переведено с {lang}, используя {provider}",
|
||||
"status.uncached_media_warning": "Прослушивание недоступно",
|
||||
"status.translated_from_with": "Переведено с {lang} с помощью {provider}",
|
||||
"status.uncached_media_warning": "Предварительный просмотр недоступен",
|
||||
"status.unmute_conversation": "Не игнорировать обсуждение",
|
||||
"status.unpin": "Открепить от профиля",
|
||||
"subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.",
|
||||
"subscribed_languages.lead": "Посты лишь на выбранных языках будут появляться в вашей домашней ленте и в списках после изменения. Снимите выбор, чтобы получать посты на всех языках.",
|
||||
"subscribed_languages.save": "Сохранить изменения",
|
||||
"subscribed_languages.target": "Изменить языки подписки для {target}",
|
||||
"tabs_bar.home": "Главная",
|
||||
|
@ -845,7 +861,7 @@
|
|||
"time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}",
|
||||
"time_remaining.moments": "остались считанные мгновения",
|
||||
"time_remaining.seconds": "{number, plural, one {# секунда} many {# секунд} other {# секунды}}",
|
||||
"trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний день} few {последние {days} дня} other {последние {days} дней}}",
|
||||
"trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний {days} день} few {последние {days} дня} other {последние {days} дней}}",
|
||||
"trends.trending_now": "Самое актуальное",
|
||||
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
|
||||
"units.short.billion": "{count} млрд",
|
||||
|
|
|
@ -87,11 +87,21 @@
|
|||
"alert.unexpected.title": "Ups!",
|
||||
"alt_text_badge.title": "Alternatívny popis",
|
||||
"announcement.announcement": "Oznámenie",
|
||||
"annual_report.summary.followers.followers": "sledovatelia",
|
||||
"annual_report.summary.followers.total": "{count} celkovo",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "najviac obľúbený príspevok",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "najviac vyzdvihovaný príspevok",
|
||||
"annual_report.summary.highlighted_post.by_replies": "príspevok s najviac odpoveďami",
|
||||
"annual_report.summary.most_used_app.most_used_app": "najviac používaná aplikácia",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "najviac užívaný hashtag",
|
||||
"annual_report.summary.new_posts.new_posts": "nové príspevky",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nepovieme Berniemu.",
|
||||
"attachments_list.unprocessed": "(nespracované)",
|
||||
"audio.hide": "Skryť zvuk",
|
||||
"block_modal.show_less": "Zobraziť menej",
|
||||
"block_modal.show_more": "Zobraziť viac",
|
||||
"block_modal.they_cant_mention": "Nemôžu ťa spomenúť, alebo nasledovať.",
|
||||
"block_modal.they_cant_see_posts": "On/a nemôže vidieť tvoje príspevky a ty neuvidíš jej/ho.",
|
||||
"block_modal.they_will_know": "Môžu vidieť, že sú zablokovaní/ý.",
|
||||
"block_modal.title": "Blokovať užívateľa?",
|
||||
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
|
||||
|
@ -338,6 +348,7 @@
|
|||
"hashtag.follow": "Sledovať hashtag",
|
||||
"hashtag.unfollow": "Prestať sledovať hashtag",
|
||||
"hashtags.and_other": "…a {count, plural, other {# ďalších}}",
|
||||
"hints.threads.see_more": "Pozri viac odpovedí na {domain}",
|
||||
"home.column_settings.show_reblogs": "Zobraziť zdieľania",
|
||||
"home.column_settings.show_replies": "Zobraziť odpovede",
|
||||
"home.hide_announcements": "Skryť oznámenia",
|
||||
|
@ -345,6 +356,9 @@
|
|||
"home.pending_critical_update.link": "Zobraziť aktualizácie",
|
||||
"home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.",
|
||||
"home.show_announcements": "Zobraziť oznámenia",
|
||||
"ignore_notifications_modal.filter_instead": "Radšej triediť",
|
||||
"ignore_notifications_modal.filter_to_act_users": "Stále budeš môcť akceptovať, odmietnuť, alebo nahlásiť užívateľov",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Triedenie pomáha vyvarovať sa možnému zmäteniu",
|
||||
"ignore_notifications_modal.ignore": "Ignoruj upozornenia",
|
||||
"interaction_modal.description.favourite": "S účtom na Mastodone môžete tento príspevok ohviezdičkovať, tak dať autorovi vedieť, že sa vám páči, a uložiť si ho na neskôr.",
|
||||
"interaction_modal.description.follow": "S účtom na Mastodone môžete {name} sledovať a vidieť ich príspevky vo svojom domovskom kanáli.",
|
||||
|
@ -361,6 +375,7 @@
|
|||
"interaction_modal.title.follow": "Sledovať {name}",
|
||||
"interaction_modal.title.reblog": "Zdieľať príspevok od {name}",
|
||||
"interaction_modal.title.reply": "Odpovedať na príspevok od {name}",
|
||||
"interaction_modal.title.vote": "Hlasuj v ankete od {name}",
|
||||
"intervals.full.days": "{number, plural, one {# deň} few {# dni} many {# dní} other {# dní}}",
|
||||
"intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodín} other {# hodín}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# minúta} few {# minúty} many {# minút} other {# minút}}",
|
||||
|
@ -401,6 +416,7 @@
|
|||
"lightbox.close": "Zatvoriť",
|
||||
"lightbox.next": "Ďalej",
|
||||
"lightbox.previous": "Späť",
|
||||
"lightbox.zoom_out": "Priblížiť na mieru",
|
||||
"limited_account_hint.action": "Aj tak zobraziť profil",
|
||||
"limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.",
|
||||
"link_preview.author": "Autor: {name}",
|
||||
|
@ -428,7 +444,11 @@
|
|||
"mute_modal.hide_options": "Skryť možnosti",
|
||||
"mute_modal.indefinite": "Pokiaľ ich neodtíšim",
|
||||
"mute_modal.show_options": "Zobraziť možnosti",
|
||||
"mute_modal.they_can_mention_and_follow": "Môže ťa spomenúť a nasledovať, ale ty ho/ju neuvidíš.",
|
||||
"mute_modal.they_wont_know": "Nebude vedieť, že bol/a stíšený/á.",
|
||||
"mute_modal.title": "Stíšiť užívateľa?",
|
||||
"mute_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ho/ju spomínajú.",
|
||||
"mute_modal.you_wont_see_posts": "Stále uvidí tvoje príspevky, ale ty neuvidíš jeho/jej.",
|
||||
"navigation_bar.about": "O tomto serveri",
|
||||
"navigation_bar.administration": "Spravovanie",
|
||||
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
|
||||
|
@ -468,12 +488,15 @@
|
|||
"notification.label.private_reply": "Súkromná odpoveď",
|
||||
"notification.label.reply": "Odpoveď",
|
||||
"notification.mention": "Zmienka",
|
||||
"notification.mentioned_you": "{name} ťa spomenul/a",
|
||||
"notification.moderation-warning.learn_more": "Zisti viac",
|
||||
"notification.moderation_warning": "Dostal/a si varovanie od moderátora",
|
||||
"notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.",
|
||||
"notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.",
|
||||
"notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.",
|
||||
"notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.",
|
||||
"notification.own_poll": "Vaša anketa sa skončila",
|
||||
"notification.poll": "Anketa, v ktorej si hlasoval/a, skončila",
|
||||
"notification.reblog": "{name} zdieľa váš príspevok",
|
||||
"notification.relationships_severance_event": "Stratené prepojenia s {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Správca z {from} pozastavil/a {target}, čo znamená, že od nich viac nemôžeš dostávať aktualizácie, alebo s nimi interaktovať.",
|
||||
|
@ -520,6 +543,8 @@
|
|||
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
|
||||
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
|
||||
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
|
||||
"notifications.policy.accept": "Prijať",
|
||||
"notifications.policy.accept_hint": "Ukáž v oznámeniach",
|
||||
"notifications.policy.drop": "Ignoruj",
|
||||
"notifications.policy.filter": "Triediť",
|
||||
"notifications.policy.filter_limited_accounts_title": "Moderované účty",
|
||||
|
@ -527,6 +552,7 @@
|
|||
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
|
||||
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
|
||||
"notifications.policy.filter_private_mentions_title": "Nevyžiadané priame spomenutia",
|
||||
"notifications.policy.title": "Spravuj oznámenia od…",
|
||||
"notifications_permission_banner.enable": "Povoliť upozornenia na ploche",
|
||||
"notifications_permission_banner.how_to_control": "Ak chcete dostávať upozornenia, keď Mastodon nie je otvorený, povoľte upozornenia na ploche. Po ich zapnutí môžete presne kontrolovať, ktoré typy interakcií generujú upozornenia na ploche, a to prostredníctvom tlačidla {icon} vyššie.",
|
||||
"notifications_permission_banner.title": "Nenechajte si nič ujsť",
|
||||
|
@ -697,6 +723,7 @@
|
|||
"status.bookmark": "Pridať záložku",
|
||||
"status.cancel_reblog_private": "Zrušiť zdieľanie",
|
||||
"status.cannot_reblog": "Tento príspevok nie je možné zdieľať",
|
||||
"status.continued_thread": "Pokračujúce vlákno",
|
||||
"status.copy": "Kopírovať odkaz na príspevok",
|
||||
"status.delete": "Vymazať",
|
||||
"status.detailed_status": "Podrobný náhľad celej konverzácie",
|
||||
|
|
|
@ -526,6 +526,7 @@
|
|||
"notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer",
|
||||
"notification.favourite.name_and_others_with_link": "{name} dhe <a>{count, plural, one {# tjetër} other {# të tjerë}}</a> i vunë shenjë postimit tuaj si të parapëlqyer",
|
||||
"notification.follow": "{name} zuri t’ju 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 t’ju ndjekë",
|
||||
"notification.follow_request.name_and_others": "Ka kërkuar t’ju ndjekë {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}",
|
||||
"notification.label.mention": "Përmendje",
|
||||
|
@ -584,6 +585,7 @@
|
|||
"notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta",
|
||||
"notifications.column_settings.follow": "Ndjekës të rinj:",
|
||||
"notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:",
|
||||
"notifications.column_settings.group": "Grupoji",
|
||||
"notifications.column_settings.mention": "Përmendje:",
|
||||
"notifications.column_settings.poll": "Përfundime pyetësori:",
|
||||
"notifications.column_settings.push": "Njoftime Push",
|
||||
|
|
|
@ -87,10 +87,22 @@
|
|||
"alert.unexpected.title": "Hoppsan!",
|
||||
"alt_text_badge.title": "Alt-Text",
|
||||
"announcement.announcement": "Meddelande",
|
||||
"annual_report.summary.archetype.booster": "Häftighetsjägaren",
|
||||
"annual_report.summary.archetype.lurker": "Smygaren",
|
||||
"annual_report.summary.archetype.oracle": "Oraklet",
|
||||
"annual_report.summary.archetype.pollster": "Frågaren",
|
||||
"annual_report.summary.archetype.replier": "Den sociala fjärilen",
|
||||
"annual_report.summary.followers.followers": "följare",
|
||||
"annual_report.summary.followers.total": "{count} totalt",
|
||||
"annual_report.summary.here_it_is": "Här är en tillbakablick på ditt {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerat inlägg",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "mest boostat inlägg",
|
||||
"annual_report.summary.highlighted_post.by_replies": "inlägg med flest svar",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}s",
|
||||
"annual_report.summary.most_used_app.most_used_app": "mest använda app",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest använda hashtag",
|
||||
"annual_report.summary.new_posts.new_posts": "nya inlägg",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Det placerar dig i topp</topLabel><percentage></percentage><bottomLabel>av Mastodon-användare.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi berättar inte för Bernie.",
|
||||
"annual_report.summary.thanks": "Tack för att du är en del av Mastodon!",
|
||||
"attachments_list.unprocessed": "(obehandlad)",
|
||||
|
@ -412,7 +424,7 @@
|
|||
"keyboard_shortcuts.blocked": "Öppna listan över blockerade användare",
|
||||
"keyboard_shortcuts.boost": "Boosta inlägg",
|
||||
"keyboard_shortcuts.column": "Fokusera kolumn",
|
||||
"keyboard_shortcuts.compose": "för att fokusera skrivfältet",
|
||||
"keyboard_shortcuts.compose": "Fokusera skrivfältet",
|
||||
"keyboard_shortcuts.description": "Beskrivning",
|
||||
"keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen",
|
||||
"keyboard_shortcuts.down": "Flytta ner i listan",
|
||||
|
@ -421,20 +433,20 @@
|
|||
"keyboard_shortcuts.favourites": "Öppna favoritlistan",
|
||||
"keyboard_shortcuts.federated": "Öppna federerad tidslinje",
|
||||
"keyboard_shortcuts.heading": "Tangentbordsgenvägar",
|
||||
"keyboard_shortcuts.home": "för att öppna Hem-tidslinjen",
|
||||
"keyboard_shortcuts.home": "Öppna Hemtidslinjen",
|
||||
"keyboard_shortcuts.hotkey": "Kommando",
|
||||
"keyboard_shortcuts.legend": "för att visa denna översikt",
|
||||
"keyboard_shortcuts.local": "för att öppna Lokal tidslinje",
|
||||
"keyboard_shortcuts.mention": "för att nämna skaparen",
|
||||
"keyboard_shortcuts.legend": "Visa denna översikt",
|
||||
"keyboard_shortcuts.local": "Öppna lokal tidslinje",
|
||||
"keyboard_shortcuts.mention": "Nämna skaparen",
|
||||
"keyboard_shortcuts.muted": "Öppna listan över tystade användare",
|
||||
"keyboard_shortcuts.my_profile": "för att öppna din profil",
|
||||
"keyboard_shortcuts.notifications": "för att öppna Meddelanden",
|
||||
"keyboard_shortcuts.open_media": "öppna media",
|
||||
"keyboard_shortcuts.my_profile": "Öppna din profil",
|
||||
"keyboard_shortcuts.notifications": "Öppna meddelanden",
|
||||
"keyboard_shortcuts.open_media": "Öppna media",
|
||||
"keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg",
|
||||
"keyboard_shortcuts.profile": "för att öppna skaparens profil",
|
||||
"keyboard_shortcuts.profile": "Öppna författarens profil",
|
||||
"keyboard_shortcuts.reply": "Svara på inlägg",
|
||||
"keyboard_shortcuts.requests": "för att öppna Följförfrågningar",
|
||||
"keyboard_shortcuts.search": "för att fokusera sökfältet",
|
||||
"keyboard_shortcuts.requests": "Öppna följförfrågningar",
|
||||
"keyboard_shortcuts.search": "Fokusera sökfältet",
|
||||
"keyboard_shortcuts.spoilers": "Visa/dölja CW-fält",
|
||||
"keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen",
|
||||
"keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW",
|
||||
|
@ -514,6 +526,7 @@
|
|||
"notification.admin.report_statuses_other": "{name} rapporterade {target}",
|
||||
"notification.admin.sign_up": "{name} registrerade sig",
|
||||
"notification.admin.sign_up.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har registrerat sig",
|
||||
"notification.annual_report.message": "Din {year} #Wrapstodon väntar! Upptäck ditt års höjdpunkter och minnesvärda stunder på Mastodon!",
|
||||
"notification.annual_report.view": "Visa #Wrapstodon",
|
||||
"notification.favourite": "{name} favoritmarkerade ditt inlägg",
|
||||
"notification.favourite.name_and_others_with_link": "{name} och <a>{count, plural, one {# annan} other {# andra}}</a> har favoritmarkerat ditt inlägg",
|
||||
|
|
|
@ -87,6 +87,13 @@
|
|||
"alert.unexpected.title": "อุปส์!",
|
||||
"alt_text_badge.title": "ข้อความแสดงแทน",
|
||||
"announcement.announcement": "ประกาศ",
|
||||
"annual_report.summary.followers.followers": "ผู้ติดตาม",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "โพสต์ที่ได้รับการชื่นชอบมากที่สุด",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "โพสต์ที่ได้รับการดันมากที่สุด",
|
||||
"annual_report.summary.highlighted_post.by_replies": "โพสต์ที่มีการตอบกลับมากที่สุด",
|
||||
"annual_report.summary.new_posts.new_posts": "โพสต์ใหม่",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "เราจะไม่บอก Bernie",
|
||||
"annual_report.summary.thanks": "ขอบคุณสำหรับการเป็นส่วนหนึ่งของ Mastodon!",
|
||||
"attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)",
|
||||
"audio.hide": "ซ่อนเสียง",
|
||||
"block_modal.remote_users_caveat": "เราจะขอให้เซิร์ฟเวอร์ {domain} เคารพการตัดสินใจของคุณ อย่างไรก็ตาม ไม่รับประกันการปฏิบัติตามข้อกำหนดเนื่องจากเซิร์ฟเวอร์บางแห่งอาจจัดการการปิดกั้นแตกต่างกัน โพสต์สาธารณะอาจยังคงปรากฏแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบ",
|
||||
|
@ -508,6 +515,7 @@
|
|||
"notification.admin.report_statuses_other": "{name} ได้รายงาน {target}",
|
||||
"notification.admin.sign_up": "{name} ได้ลงทะเบียน",
|
||||
"notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน",
|
||||
"notification.annual_report.view": "ดู #Wrapstodon",
|
||||
"notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
|
||||
"notification.favourite.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ชื่นชอบโพสต์ของคุณ",
|
||||
"notification.follow": "{name} ได้ติดตามคุณ",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Hay aksi!",
|
||||
"alt_text_badge.title": "Alternatif metin",
|
||||
"announcement.announcement": "Duyuru",
|
||||
"annual_report.summary.archetype.booster": "Trend takipçisi",
|
||||
"annual_report.summary.archetype.lurker": "Gizli meraklı",
|
||||
"annual_report.summary.archetype.oracle": "Kahin",
|
||||
"annual_report.summary.archetype.pollster": "Anketör",
|
||||
"annual_report.summary.archetype.replier": "Sosyal kelebek",
|
||||
"annual_report.summary.followers.followers": "takipçiler",
|
||||
"annual_report.summary.followers.total": "{count} toplam",
|
||||
"annual_report.summary.here_it_is": "İşte {year} yılı değerlendirmeniz:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "en çok beğenilen gönderi",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "en çok paylaşılan gönderi",
|
||||
"annual_report.summary.highlighted_post.by_replies": "en çok yanıt alan gönderi",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "en çok kullanılan uygulama",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "en çok kullanılan etiket",
|
||||
"annual_report.summary.new_posts.new_posts": "yeni gönderiler",
|
||||
"annual_report.summary.percentile.text": "<bottomLabel>Mastodon kullanıcılarının</bottomLabel><percentage></percentage><topLabel>üst dilimindesiniz</topLabel>.",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Bernie'ye söylemeyiz.",
|
||||
"annual_report.summary.thanks": "Mastodon'un bir parçası olduğunuz için teşekkürler!",
|
||||
"attachments_list.unprocessed": "(işlenmemiş)",
|
||||
"audio.hide": "Sesi gizle",
|
||||
"block_modal.remote_users_caveat": "{domain} sunucusundan kararınıza saygı duymasını isteyeceğiz. Ancak, Uymaları garanti değildir çünkü bazı sunucular engellemeyi farklı şekilde yapıyorlar. Herkese açık gönderiler giriş yapmamış kullanıcılara görüntülenmeye devam edebilir.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name}, {target} kişisini bildirdi",
|
||||
"notification.admin.sign_up": "{name} kaydoldu",
|
||||
"notification.admin.sign_up.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} kaydoldu",
|
||||
"notification.annual_report.message": "{year} yılı #Wrapstodon'unuz bekliyor! Yılınızın Mastodon'daki öne çıkanlarını ve anılarınızı gösterin!",
|
||||
"notification.annual_report.view": "#Wrapstodon'u Görüntüle",
|
||||
"notification.favourite": "{name} gönderinizi beğendi",
|
||||
"notification.favourite.name_and_others_with_link": "{name} ve <a>{count, plural, one {# diğer kişi} other {# diğer kişi}}</a> gönderinizi beğendi",
|
||||
"notification.follow": "{name} seni takip etti",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Ой!",
|
||||
"alt_text_badge.title": "Альтернативний текст",
|
||||
"announcement.announcement": "Оголошення",
|
||||
"annual_report.summary.archetype.booster": "Мисливець на дописи",
|
||||
"annual_report.summary.archetype.lurker": "Причаєнець",
|
||||
"annual_report.summary.archetype.oracle": "Оракул",
|
||||
"annual_report.summary.archetype.pollster": "Опитувач",
|
||||
"annual_report.summary.archetype.replier": "Душа компанії",
|
||||
"annual_report.summary.followers.followers": "підписники",
|
||||
"annual_report.summary.followers.total": "Загалом {count}",
|
||||
"annual_report.summary.here_it_is": "Ось ваші підсумки {year} року:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "найуподобаніші дописи",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "найпоширюваніші дописи",
|
||||
"annual_report.summary.highlighted_post.by_replies": "найкоментованіші дописи",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег",
|
||||
"annual_report.summary.new_posts.new_posts": "нові дописи",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Це виводить вас в топ</topLabel><percentage></percentage><bottomLabel> користувачів Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ми не скажемо Bernie.",
|
||||
"annual_report.summary.thanks": "Дякуємо, що ви є частиною Mastodon!",
|
||||
"attachments_list.unprocessed": "(не оброблено)",
|
||||
"audio.hide": "Сховати аудіо",
|
||||
"block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} повідомляє про {target}",
|
||||
"notification.admin.sign_up": "{name} приєдналися",
|
||||
"notification.admin.sign_up.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} зареєструвалися",
|
||||
"notification.annual_report.message": "#Wrapstodon за {year} чекає на вас! Дізнайтеся про найяскравіші та пам'ятні моменти вашого року на Mastodon!",
|
||||
"notification.annual_report.view": "Переглянути #Wrapstodon",
|
||||
"notification.favourite": "Ваш допис сподобався {name}",
|
||||
"notification.favourite.name_and_others_with_link": "{name} та <a>{count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}</a> вподобали ваш допис",
|
||||
"notification.follow": "{name} підписалися на вас",
|
||||
|
|
|
@ -87,6 +87,24 @@
|
|||
"alert.unexpected.title": "Ốiii!",
|
||||
"alt_text_badge.title": "Văn bản thay thế",
|
||||
"announcement.announcement": "Có gì mới?",
|
||||
"annual_report.summary.archetype.booster": "Hiệp sĩ ngầu",
|
||||
"annual_report.summary.archetype.lurker": "Kẻ rình mò",
|
||||
"annual_report.summary.archetype.oracle": "Nhà tiên tri",
|
||||
"annual_report.summary.archetype.pollster": "Chuyên gia khảo sát",
|
||||
"annual_report.summary.archetype.replier": "Bướm xã hội",
|
||||
"annual_report.summary.followers.followers": "người theo dõi",
|
||||
"annual_report.summary.followers.total": "tổng {count}",
|
||||
"annual_report.summary.here_it_is": "Nhìn lại năm {year} của bạn:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "tút được thích nhiều nhất",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "tút được đăng lại nhiều nhất",
|
||||
"annual_report.summary.highlighted_post.by_replies": "tút được trả lời nhiều nhất",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "app dùng nhiều nhất",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag dùng nhiều nhất",
|
||||
"annual_report.summary.new_posts.new_posts": "tút mới",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Bạn nằm trong top</topLabel><percentage></percentage><bottomLabel>thành viên Mastodon.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Chúng tôi sẽ không kể cho Bernie.",
|
||||
"annual_report.summary.thanks": "Cảm ơn đã trở thành một phần của Mastodon!",
|
||||
"attachments_list.unprocessed": "(chưa xử lí)",
|
||||
"audio.hide": "Ẩn âm thanh",
|
||||
"block_modal.remote_users_caveat": "Chúng tôi sẽ yêu cầu {domain} tôn trọng quyết định của bạn. Tuy nhiên, việc tuân thủ không được đảm bảo vì một số máy chủ có thể xử lý việc chặn theo cách khác nhau. Các tút công khai vẫn có thể hiển thị đối với người dùng chưa đăng nhập.",
|
||||
|
@ -508,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} báo cáo {target}",
|
||||
"notification.admin.sign_up": "{name} tham gia máy chủ của bạn",
|
||||
"notification.admin.sign_up.name_and_others": "{name} và {count, plural, other {# người}} đã đăng ký",
|
||||
"notification.annual_report.message": "#Wrapstodon {year} của bạn có rồi đây! Hãy chia sẻ những điểm nhấn và khoảnh khắc đáng nhớ trên Mastodon của bạn trong năm qua!",
|
||||
"notification.annual_report.view": "Xem #Wrapstodon",
|
||||
"notification.favourite": "{name} thích tút của bạn",
|
||||
"notification.favourite.name_and_others_with_link": "{name} và <a>{count, plural, other {# người khác}}</a> đã thích tút của bạn",
|
||||
"notification.follow": "{name} theo dõi bạn",
|
||||
|
|
|
@ -87,15 +87,15 @@
|
|||
"alert.unexpected.title": "哎呀!",
|
||||
"alt_text_badge.title": "ALT 說明文字",
|
||||
"announcement.announcement": "公告",
|
||||
"annual_report.summary.archetype.booster": "酷炫的獵人",
|
||||
"annual_report.summary.archetype.lurker": "潛伏者",
|
||||
"annual_report.summary.archetype.booster": "酷炫獵人",
|
||||
"annual_report.summary.archetype.lurker": "潛水高手",
|
||||
"annual_report.summary.archetype.oracle": "先知",
|
||||
"annual_report.summary.archetype.pollster": "民調人員",
|
||||
"annual_report.summary.archetype.pollster": "民調專家",
|
||||
"annual_report.summary.archetype.replier": "社交菁英",
|
||||
"annual_report.summary.followers.followers": "跟隨者",
|
||||
"annual_report.summary.followers.total": "總共 {count}",
|
||||
"annual_report.summary.here_it_is": "以下是您的{year}年度回顧:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "最愛的嘟文",
|
||||
"annual_report.summary.here_it_is": "以下是您的 {year} 年度回顧:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "最多被加到最愛的嘟文",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "最多轉嘟的嘟文",
|
||||
"annual_report.summary.highlighted_post.by_replies": "最多回覆的嘟文",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name} 的",
|
||||
|
@ -103,7 +103,8 @@
|
|||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最常使用的主題標籤",
|
||||
"annual_report.summary.new_posts.new_posts": "新嘟文",
|
||||
"annual_report.summary.percentile.text": "<topLabel>這讓您成為前</topLabel><percentage></percentage><bottomLabel>Mastodon 的使用者。</bottomLabel>",
|
||||
"annual_report.summary.thanks": "感謝您成為 Mastodon 的一員!",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "我們不會告訴 Bernie。",
|
||||
"annual_report.summary.thanks": "感謝您成為 Mastodon 的一份子!",
|
||||
"attachments_list.unprocessed": "(未經處理)",
|
||||
"audio.hide": "隱藏音訊",
|
||||
"block_modal.remote_users_caveat": "我們會要求 {domain} 伺服器尊重您的決定。然而,我們無法保證所有伺服器皆會遵守,某些伺服器可能以不同方式處理封鎖。未登入之使用者仍可能看見您的公開嘟文。",
|
||||
|
@ -525,6 +526,8 @@
|
|||
"notification.admin.report_statuses_other": "{name} 已檢舉 {target}",
|
||||
"notification.admin.sign_up": "{name} 已經註冊",
|
||||
"notification.admin.sign_up.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已註冊",
|
||||
"notification.annual_report.message": "您的 {year} #Wrapstodon 正等著您!揭開您 Mastodon 上的年度精彩時刻與值得回憶的難忘時光!",
|
||||
"notification.annual_report.view": "檢視 #Wrapstodon",
|
||||
"notification.favourite": "{name} 已將您的嘟文加入最愛",
|
||||
"notification.favourite.name_and_others_with_link": "{name} 與<a>{count, plural, other {其他 # 個人}}</a>已將您的嘟文加入最愛",
|
||||
"notification.follow": "{name} 已跟隨您",
|
||||
|
|
|
@ -535,3 +535,10 @@ a.sparkline {
|
|||
::-webkit-scrollbar-thumb {
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
.notification-group--annual-report {
|
||||
.notification-group__icon,
|
||||
.notification-group__main .link-button {
|
||||
color: var(--indigo-3);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,6 +103,11 @@
|
|||
background-color: var(--goldenrod-2);
|
||||
}
|
||||
}
|
||||
|
||||
.status-card,
|
||||
.hashtag-bar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&__followers {
|
||||
|
@ -237,7 +242,7 @@
|
|||
}
|
||||
|
||||
&__number {
|
||||
font-size: 61px;
|
||||
font-size: 54px;
|
||||
font-weight: 600;
|
||||
line-height: 73px;
|
||||
color: var(--goldenrod-2);
|
||||
|
@ -306,7 +311,7 @@
|
|||
}
|
||||
|
||||
.annual-report-modal {
|
||||
max-width: 480px;
|
||||
max-width: 600px;
|
||||
background: var(--indigo-1);
|
||||
border-radius: 16px;
|
||||
display: flex;
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AccountReachFinder
|
||||
RECENT_LIMIT = 2_000
|
||||
STATUS_LIMIT = 200
|
||||
STATUS_SINCE = 2.days
|
||||
|
||||
def initialize(account)
|
||||
@account = account
|
||||
end
|
||||
|
@ -20,13 +24,27 @@ class AccountReachFinder
|
|||
end
|
||||
|
||||
def recently_mentioned_inboxes
|
||||
cutoff_id = Mastodon::Snowflake.id_at(2.days.ago, with_random: false)
|
||||
recent_statuses = @account.statuses.recent.where(id: cutoff_id...).limit(200)
|
||||
|
||||
Account.joins(:mentions).where(mentions: { status: recent_statuses }).inboxes.take(2000)
|
||||
Account
|
||||
.joins(:mentions)
|
||||
.where(mentions: { status: recent_statuses })
|
||||
.inboxes
|
||||
.take(RECENT_LIMIT)
|
||||
end
|
||||
|
||||
def relay_inboxes
|
||||
Relay.enabled.pluck(:inbox_url)
|
||||
end
|
||||
|
||||
def oldest_status_id
|
||||
Mastodon::Snowflake
|
||||
.id_at(STATUS_SINCE.ago, with_random: false)
|
||||
end
|
||||
|
||||
def recent_statuses
|
||||
@account
|
||||
.statuses
|
||||
.recent
|
||||
.where(id: oldest_status_id...)
|
||||
.limit(STATUS_LIMIT)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,7 @@ class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck
|
|||
end
|
||||
|
||||
def pass?
|
||||
!ActiveRecord::Base.connection.migration_context.needs_migration?
|
||||
!ActiveRecord::Base.connection_pool.migration_context.needs_migration?
|
||||
end
|
||||
|
||||
def message
|
||||
|
|
|
@ -334,14 +334,10 @@ class Request
|
|||
def check_private_address(address, host)
|
||||
addr = IPAddr.new(address.to_s)
|
||||
|
||||
return if Rails.env.development? || private_address_exceptions.any? { |range| range.include?(addr) }
|
||||
return if Rails.env.development? || Rails.configuration.x.private_address_exceptions.any? { |range| range.include?(addr) }
|
||||
|
||||
raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
|
||||
end
|
||||
|
||||
def private_address_exceptions
|
||||
@private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class SuspiciousSignInDetector
|
|||
end
|
||||
|
||||
def previously_seen_ip?(request)
|
||||
@user.ips.exists?(['ip <<= ?', masked_ip(request)])
|
||||
@user.ips.contained_by(masked_ip(request)).exists?
|
||||
end
|
||||
|
||||
def freshly_signed_up?
|
||||
|
|
|
@ -9,10 +9,16 @@ class Vacuum::ImportsVacuum
|
|||
private
|
||||
|
||||
def clean_unconfirmed_imports!
|
||||
BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).in_batches.delete_all
|
||||
BulkImport
|
||||
.confirmation_missed
|
||||
.in_batches
|
||||
.delete_all
|
||||
end
|
||||
|
||||
def clean_old_imports!
|
||||
BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all
|
||||
BulkImport
|
||||
.archival_completed
|
||||
.in_batches
|
||||
.delete_all
|
||||
end
|
||||
end
|
||||
|
|
|
@ -94,6 +94,8 @@ class Account < ApplicationRecord
|
|||
include Account::Interactions
|
||||
include Account::Merging
|
||||
include Account::Search
|
||||
include Account::Sensitizes
|
||||
include Account::Silences
|
||||
include Account::StatusesSearch
|
||||
include Account::OtherSettings
|
||||
include Account::MasterSettings
|
||||
|
@ -136,9 +138,6 @@ class Account < ApplicationRecord
|
|||
scope :remote, -> { where.not(domain: nil) }
|
||||
scope :local, -> { where(domain: nil) }
|
||||
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
|
||||
scope :silenced, -> { where.not(silenced_at: nil) }
|
||||
scope :sensitized, -> { where.not(sensitized_at: nil) }
|
||||
scope :without_silenced, -> { where(silenced_at: nil) }
|
||||
scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
|
||||
scope :recent, -> { reorder(id: :desc) }
|
||||
scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) }
|
||||
|
@ -271,30 +270,6 @@ class Account < ApplicationRecord
|
|||
ResolveAccountService.new.call(acct) unless local?
|
||||
end
|
||||
|
||||
def silenced?
|
||||
silenced_at.present?
|
||||
end
|
||||
|
||||
def silence!(date = Time.now.utc)
|
||||
update!(silenced_at: date)
|
||||
end
|
||||
|
||||
def unsilence!
|
||||
update!(silenced_at: nil)
|
||||
end
|
||||
|
||||
def sensitized?
|
||||
sensitized_at.present?
|
||||
end
|
||||
|
||||
def sensitize!(date = Time.now.utc)
|
||||
update!(sensitized_at: date)
|
||||
end
|
||||
|
||||
def unsensitize!
|
||||
update!(sensitized_at: nil)
|
||||
end
|
||||
|
||||
def memorialize!
|
||||
update!(memorial: true)
|
||||
end
|
||||
|
|
|
@ -136,7 +136,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
|||
end
|
||||
|
||||
def without_direct_scope
|
||||
Status.where.not(visibility: :direct)
|
||||
Status.not_direct_visibility
|
||||
end
|
||||
|
||||
def old_enough_scope(max_id = nil)
|
||||
|
|
|
@ -33,6 +33,7 @@ class Admin::ActionLogFilter
|
|||
create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze,
|
||||
create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze,
|
||||
create_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze,
|
||||
create_relay: { target_type: 'Relay', action: 'create' }.freeze,
|
||||
create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze,
|
||||
create_user_role: { target_type: 'UserRole', action: 'create' }.freeze,
|
||||
create_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'create' }.freeze,
|
||||
|
@ -42,6 +43,7 @@ class Admin::ActionLogFilter
|
|||
destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze,
|
||||
destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze,
|
||||
destroy_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze,
|
||||
destroy_relay: { target_type: 'Relay', action: 'destroy' }.freeze,
|
||||
destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
|
||||
destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze,
|
||||
destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze,
|
||||
|
@ -51,8 +53,10 @@ class Admin::ActionLogFilter
|
|||
disable_2fa_user: { target_type: 'User', action: 'disable_2fa' }.freeze,
|
||||
disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
|
||||
disable_user: { target_type: 'User', action: 'disable' }.freeze,
|
||||
disable_relay: { target_type: 'Relay', action: 'disable' }.freeze,
|
||||
enable_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze,
|
||||
enable_user: { target_type: 'User', action: 'enable' }.freeze,
|
||||
enable_relay: { target_type: 'Relay', action: 'enable' }.freeze,
|
||||
memorialize_account: { target_type: 'Account', action: 'memorialize' }.freeze,
|
||||
promote_user: { target_type: 'User', action: 'promote' }.freeze,
|
||||
remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze,
|
||||
|
|
|
@ -32,7 +32,7 @@ class Admin::StatusFilter
|
|||
def scope_for(key, _value)
|
||||
case key.to_s
|
||||
when 'media'
|
||||
Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).reorder('statuses.id desc')
|
||||
Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).recent
|
||||
else
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
class BulkImport < ApplicationRecord
|
||||
self.inheritance_column = false
|
||||
|
||||
ARCHIVE_PERIOD = 1.week
|
||||
CONFIRM_PERIOD = 10.minutes
|
||||
|
||||
belongs_to :account
|
||||
has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all
|
||||
|
||||
|
@ -42,6 +45,9 @@ class BulkImport < ApplicationRecord
|
|||
|
||||
validates :type, presence: true
|
||||
|
||||
scope :archival_completed, -> { where(created_at: ..ARCHIVE_PERIOD.ago) }
|
||||
scope :confirmation_missed, -> { state_unconfirmed.where(created_at: ..CONFIRM_PERIOD.ago) }
|
||||
|
||||
def self.progress!(bulk_import_id, imported: false)
|
||||
# Use `increment_counter` so that the incrementation is done atomically in the database
|
||||
BulkImport.increment_counter(:processed_items, bulk_import_id)
|
||||
|
|
21
app/models/concerns/account/sensitizes.rb
Normal file
21
app/models/concerns/account/sensitizes.rb
Normal 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
|
22
app/models/concerns/account/silences.rb
Normal file
22
app/models/concerns/account/silences.rb
Normal 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
|
10
app/models/concerns/inet_container.rb
Normal file
10
app/models/concerns/inet_container.rb
Normal 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
|
|
@ -15,7 +15,9 @@ module Status::SafeReblogInsert
|
|||
#
|
||||
# The code is kept similar to ActiveRecord::Persistence code and calls it
|
||||
# directly when we are not handling a reblog.
|
||||
def _insert_record(values, returning)
|
||||
#
|
||||
# https://github.com/rails/rails/blob/v7.2.1.1/activerecord/lib/active_record/persistence.rb#L238-L263
|
||||
def _insert_record(connection, values, returning)
|
||||
return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present?
|
||||
|
||||
primary_key = self.primary_key
|
||||
|
@ -30,16 +32,21 @@ module Status::SafeReblogInsert
|
|||
|
||||
# The following line departs from stock ActiveRecord
|
||||
# Original code was:
|
||||
# im.insert(values.transform_keys { |name| arel_table[name] })
|
||||
# im = Arel::InsertManager.new(arel_table)
|
||||
# Instead, we use a custom builder when a reblog is happening:
|
||||
im = _compile_reblog_insert(values)
|
||||
|
||||
connection.insert(im, "#{self} Create", primary_key || false, primary_key_value, returning: returning).tap do |result|
|
||||
with_connection do |_c|
|
||||
connection.insert(
|
||||
im, "#{self} Create", primary_key || false, primary_key_value,
|
||||
returning: returning
|
||||
).tap do |result|
|
||||
# Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
|
||||
# For our purposes, it's equivalent to a foreign key constraint violation
|
||||
raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def _compile_reblog_insert(values)
|
||||
# This is somewhat equivalent to the following code of ActiveRecord::Persistence:
|
||||
|
|
|
@ -28,6 +28,8 @@ class EmailDomainBlock < ApplicationRecord
|
|||
|
||||
validates :domain, presence: true, uniqueness: true, domain: true
|
||||
|
||||
scope :parents, -> { where(parent_id: nil) }
|
||||
|
||||
# Used for adding multiple blocks at once
|
||||
attr_accessor :other_domains
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ class IpBlock < ApplicationRecord
|
|||
CACHE_KEY = 'blocked_ips'
|
||||
|
||||
include Expireable
|
||||
include InetContainer
|
||||
include Paginable
|
||||
|
||||
enum :severity, {
|
||||
|
|
|
@ -25,6 +25,10 @@ class Relay < ApplicationRecord
|
|||
|
||||
alias enabled? accepted?
|
||||
|
||||
def to_log_human_identifier
|
||||
inbox_url
|
||||
end
|
||||
|
||||
def enable!
|
||||
activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
|
||||
payload = Oj.dump(follow_activity(activity_id))
|
||||
|
|
|
@ -15,6 +15,7 @@ class ScheduledStatus < ApplicationRecord
|
|||
|
||||
TOTAL_LIMIT = 300
|
||||
DAILY_LIMIT = 25
|
||||
MINIMUM_OFFSET = 5.minutes.freeze
|
||||
|
||||
belongs_to :account, inverse_of: :scheduled_statuses
|
||||
has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify
|
||||
|
@ -26,7 +27,7 @@ class ScheduledStatus < ApplicationRecord
|
|||
private
|
||||
|
||||
def validate_future_date
|
||||
errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET
|
||||
errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + MINIMUM_OFFSET
|
||||
end
|
||||
|
||||
def validate_total_limit
|
||||
|
|
|
@ -30,6 +30,8 @@ class SessionActivation < ApplicationRecord
|
|||
|
||||
DEFAULT_SCOPES = %w(read write follow).freeze
|
||||
|
||||
scope :latest, -> { order(id: :desc) }
|
||||
|
||||
class << self
|
||||
def active?(id)
|
||||
id && exists?(session_id: id)
|
||||
|
@ -48,7 +50,7 @@ class SessionActivation < ApplicationRecord
|
|||
end
|
||||
|
||||
def purge_old
|
||||
order('created_at desc').offset(Rails.configuration.x.max_session_activations).destroy_all
|
||||
latest.offset(Rails.configuration.x.max_session_activations).destroy_all
|
||||
end
|
||||
|
||||
def exclusive(id)
|
||||
|
|
|
@ -24,7 +24,7 @@ class SoftwareUpdate < ApplicationRecord
|
|||
|
||||
class << self
|
||||
def check_enabled?
|
||||
ENV['UPDATE_CHECK_URL'] != ''
|
||||
Rails.configuration.x.mastodon.software_update_url.present?
|
||||
end
|
||||
|
||||
def pending_to_a
|
||||
|
|
|
@ -163,6 +163,7 @@ class Status < ApplicationRecord
|
|||
scope :distributable_visibility, -> { where(visibility: %i(public public_unlisted login unlisted)) }
|
||||
scope :distributable_visibility_for_anonymous, -> { where(visibility: %i(public public_unlisted unlisted)) }
|
||||
scope :list_eligible_visibility, -> { where(visibility: %i(public public_unlisted login unlisted private)) }
|
||||
scope :not_direct_visibility, -> { where.not(visibility: :direct) }
|
||||
|
||||
after_create_commit :trigger_create_webhooks
|
||||
after_update_commit :trigger_update_webhooks
|
||||
|
|
|
@ -130,7 +130,7 @@ class User < ApplicationRecord
|
|||
scope :signed_in_recently, -> { where(current_sign_in_at: ACTIVE_DURATION.ago..) }
|
||||
scope :not_signed_in_recently, -> { where(current_sign_in_at: ...ACTIVE_DURATION.ago) }
|
||||
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
|
||||
scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value).group('users.id') }
|
||||
scope :matches_ip, ->(value) { left_joins(:ips).merge(IpBlock.contained_by(value)).group('users.id') }
|
||||
|
||||
before_validation :sanitize_role
|
||||
before_create :set_approved
|
||||
|
@ -363,7 +363,7 @@ class User < ApplicationRecord
|
|||
Doorkeeper::AccessGrant.by_resource_owner(self).update_all(revoked_at: Time.now.utc)
|
||||
|
||||
Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch|
|
||||
batch.update_all(revoked_at: Time.now.utc)
|
||||
batch.touch_all(:revoked_at)
|
||||
Web::PushSubscription.where(access_token_id: batch).delete_all
|
||||
|
||||
# Revoke each access token for the Streaming API, since `update_all``
|
||||
|
@ -467,7 +467,7 @@ class User < ApplicationRecord
|
|||
end
|
||||
|
||||
def sign_up_from_ip_requires_approval?
|
||||
sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.exists?(['ip >>= ?', sign_up_ip.to_s])
|
||||
sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.containing(sign_up_ip.to_s).exists?
|
||||
end
|
||||
|
||||
def sign_up_email_requires_approval?
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
class UserIp < ApplicationRecord
|
||||
include DatabaseViewRecord
|
||||
include InetContainer
|
||||
|
||||
self.primary_key = :user_id
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
|
||||
attributes :client_id, :client_secret
|
||||
attributes :client_id, :client_secret, :client_secret_expires_at
|
||||
|
||||
def client_id
|
||||
object.uid
|
||||
|
@ -10,4 +10,10 @@ class REST::CredentialApplicationSerializer < REST::ApplicationSerializer
|
|||
def client_secret
|
||||
object.secret
|
||||
end
|
||||
|
||||
# Added for future forwards compatibility when we may decide to expire OAuth
|
||||
# Applications. Set to zero means that the client_secret never expires.
|
||||
def client_secret_expires_at
|
||||
0
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,8 +6,6 @@ class PostStatusService < BaseService
|
|||
include DtlHelper
|
||||
include NgRuleHelper
|
||||
|
||||
MIN_SCHEDULE_OFFSET = 5.minutes.freeze
|
||||
|
||||
class UnexpectedMentionsError < StandardError
|
||||
attr_reader :accounts
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class SoftwareUpdateCheckService < BaseService
|
|||
end
|
||||
|
||||
def api_url
|
||||
ENV.fetch('UPDATE_CHECK_URL', 'https://kmy.blue/update-check')
|
||||
Rails.configuration.x.mastodon.software_update_url
|
||||
end
|
||||
|
||||
def version
|
||||
|
|
|
@ -12,7 +12,7 @@ class UnallowDomainService < BaseService
|
|||
private
|
||||
|
||||
def suspend_accounts!(domain)
|
||||
Account.where(domain: domain).in_batches.update_all(suspended_at: Time.now.utc)
|
||||
Account.where(domain: domain).in_batches.touch_all(:suspended_at)
|
||||
AfterUnallowDomainWorker.perform_async(domain)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: @time_period.last,
|
||||
href: admin_accounts_path(origin: 'local'),
|
||||
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil,
|
||||
label: t('admin.dashboard.new_users'),
|
||||
measure: 'new_users',
|
||||
start_at: @time_period.first
|
||||
|
@ -24,7 +24,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: @time_period.last,
|
||||
href: admin_accounts_path(origin: 'local'),
|
||||
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil,
|
||||
label: t('admin.dashboard.active_users'),
|
||||
measure: 'active_users',
|
||||
start_at: @time_period.first
|
||||
|
@ -39,7 +39,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: @time_period.last,
|
||||
href: admin_reports_path,
|
||||
href: current_user.can?(:manage_reports) ? admin_reports_path : nil,
|
||||
label: t('admin.dashboard.opened_reports'),
|
||||
measure: 'opened_reports',
|
||||
start_at: @time_period.first
|
||||
|
@ -47,7 +47,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: @time_period.last,
|
||||
href: admin_reports_path(resolved: '1'),
|
||||
href: current_user.can?(:manage_reports) ? admin_reports_path(resolved: '1') : nil,
|
||||
label: t('admin.dashboard.resolved_reports'),
|
||||
measure: 'resolved_reports',
|
||||
start_at: @time_period.first
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: period_end_at,
|
||||
href: admin_accounts_path(origin: 'remote', by_domain: instance_domain),
|
||||
href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'remote', by_domain: instance_domain) : nil,
|
||||
label: t('admin.instances.dashboard.instance_accounts_measure'),
|
||||
measure: 'instance_accounts',
|
||||
params: { domain: instance_domain },
|
||||
|
@ -43,7 +43,7 @@
|
|||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
end_at: period_end_at,
|
||||
href: admin_reports_path(by_target_domain: instance_domain),
|
||||
href: current_user.can?(:manage_reports) ? admin_reports_path(by_target_domain: instance_domain) : nil,
|
||||
label: t('admin.instances.dashboard.instance_reports_measure'),
|
||||
measure: 'instance_reports',
|
||||
params: { domain: instance_domain },
|
||||
|
|
|
@ -27,7 +27,7 @@ class Scheduler::ScheduledStatusesScheduler
|
|||
end
|
||||
|
||||
def due_statuses
|
||||
ScheduledStatus.where(scheduled_at: ..Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET)
|
||||
ScheduledStatus.where(scheduled_at: ..time_due_at)
|
||||
end
|
||||
|
||||
def expired_statuses
|
||||
|
@ -41,7 +41,7 @@ class Scheduler::ScheduledStatusesScheduler
|
|||
end
|
||||
|
||||
def due_announcements
|
||||
Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET)
|
||||
Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', time_due_at)
|
||||
end
|
||||
|
||||
def unpublish_expired_announcements!
|
||||
|
@ -51,4 +51,8 @@ class Scheduler::ScheduledStatusesScheduler
|
|||
def expired_announcements
|
||||
Announcement.published.where('ends_at IS NOT NULL AND ends_at <= ?', Time.now.utc)
|
||||
end
|
||||
|
||||
def time_due_at
|
||||
Time.now.utc + ScheduledStatus::MINIMUM_OFFSET
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,6 +13,8 @@ class Web::PushNotificationWorker
|
|||
@subscription = Web::PushSubscription.find(subscription_id)
|
||||
@notification = Notification.find(notification_id)
|
||||
|
||||
return if @notification.updated_at < TTL.ago
|
||||
|
||||
# Polymorphically associated activity could have been deleted
|
||||
# in the meantime, so we have to double-check before proceeding
|
||||
return unless @notification.activity.present? && @subscription.pushable?(@notification)
|
||||
|
|
|
@ -2,5 +2,6 @@
|
|||
|
||||
# This file is used by Rack-based servers to start the application.
|
||||
|
||||
require File.expand_path('config/environment', __dir__)
|
||||
require_relative 'config/environment'
|
||||
|
||||
run Rails.application
|
||||
|
|
|
@ -52,8 +52,6 @@ require_relative '../lib/action_dispatch/remote_ip_extensions'
|
|||
require_relative '../lib/stoplight/redis_data_store_extensions'
|
||||
require_relative '../lib/active_record/database_tasks_extensions'
|
||||
require_relative '../lib/active_record/batches'
|
||||
require_relative '../lib/active_record/with_recursive'
|
||||
require_relative '../lib/arel/union_parenthesizing'
|
||||
require_relative '../lib/simple_navigation/item_extensions'
|
||||
|
||||
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
|
||||
|
@ -61,10 +59,7 @@ Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
|
|||
module Mastodon
|
||||
class Application < Rails::Application
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
config.load_defaults 7.1
|
||||
|
||||
# Explicitly set the cache format version to align with Rails version
|
||||
config.active_support.cache_format_version = 7.1
|
||||
config.load_defaults 7.2
|
||||
|
||||
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
||||
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
||||
|
@ -110,6 +105,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
config.x.captcha = config_for(:captcha)
|
||||
config.x.mastodon = config_for(:mastodon)
|
||||
config.x.translation = config_for(:translation)
|
||||
|
||||
config.to_prepare do
|
||||
|
|
|
@ -37,11 +37,6 @@ Rails.application.configure do
|
|||
|
||||
config.action_controller.forgery_protection_origin_check = ENV['DISABLE_FORGERY_REQUEST_PROTECTION'].nil?
|
||||
|
||||
ActiveSupport::Logger.new($stdout).tap do |logger|
|
||||
logger.formatter = config.log_formatter
|
||||
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
||||
end
|
||||
|
||||
# Generate random VAPID keys
|
||||
Webpush.generate_key.tap do |vapid_key|
|
||||
config.x.vapid_private_key = vapid_key.private_key
|
||||
|
@ -51,6 +46,8 @@ Rails.application.configure do
|
|||
# Don't care if the mailer can't send.
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Disable caching for Action Mailer templates even if Action Controller
|
||||
# caching is enabled.
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
# Print deprecation notices to the Rails logger.
|
||||
|
@ -89,6 +86,9 @@ Rails.application.configure do
|
|||
|
||||
# Raise error when a before_action's only/except options reference missing actions.
|
||||
config.action_controller.raise_on_missing_callback_actions = true
|
||||
|
||||
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
|
||||
config.generators.apply_rubocop_autocorrect_after_generate!
|
||||
end
|
||||
|
||||
Redis.raise_deprecations = true
|
||||
|
|
|
@ -17,7 +17,6 @@ Rails.application.configure do
|
|||
# Full error reports are disabled and caching is turned on.
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
|
||||
|
||||
# Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
|
||||
# key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
|
||||
|
@ -26,8 +25,11 @@ Rails.application.configure do
|
|||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||
config.assets.compile = false
|
||||
|
||||
# Disable serving static files from `public/`, relying on NGINX/Apache to do so instead.
|
||||
# config.public_file_server.enabled = false
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.asset_host = "http://assets.example.com"
|
||||
config.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
|
||||
|
||||
# Specifies the header that your server uses for sending files.
|
||||
config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present?
|
||||
|
@ -37,6 +39,10 @@ Rails.application.configure do
|
|||
# Allow to specify public IP of reverse proxy if it's needed
|
||||
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
|
||||
|
||||
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
|
||||
# Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
|
||||
# config.assume_ssl = true
|
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||
config.force_ssl = true
|
||||
# Skip http-to-https redirect for the default health check endpoint.
|
||||
|
@ -46,14 +52,19 @@ Rails.application.configure do
|
|||
},
|
||||
}
|
||||
|
||||
# Info include generic and useful information about system operation, but avoids logging too much
|
||||
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
|
||||
# want to log everything, set the level to "debug".
|
||||
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym
|
||||
# Log to STDOUT by default
|
||||
config.logger = ActiveSupport::Logger.new($stdout)
|
||||
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
|
||||
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
|
||||
|
||||
# Prepend all log lines with the following tags.
|
||||
config.log_tags = [:request_id]
|
||||
|
||||
# "info" includes generic and useful information about system operation, but avoids logging too much
|
||||
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
|
||||
# want to log everything, set the level to "debug".
|
||||
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info')
|
||||
|
||||
# Use a different cache store in production.
|
||||
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
|
||||
|
||||
|
@ -61,6 +72,8 @@ Rails.application.configure do
|
|||
# config.active_job.queue_adapter = :resque
|
||||
# config.active_job.queue_name_prefix = "mastodon_production"
|
||||
|
||||
# Disable caching for Action Mailer templates even if Action Controller
|
||||
# caching is enabled.
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
# Ignore bad email addresses and do not raise email delivery errors.
|
||||
|
@ -87,18 +100,8 @@ Rails.application.configure do
|
|||
{ key: controller.signature_key_id } if controller.respond_to?(:signed_request?) && controller.signed_request?
|
||||
end
|
||||
|
||||
# Use a different logger for distributed setups.
|
||||
# require "syslog/logger"
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
|
||||
|
||||
# Log to STDOUT by default
|
||||
config.logger = ActiveSupport::Logger.new($stdout)
|
||||
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
|
||||
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
|
||||
|
||||
# Do not dump schema after migrations.
|
||||
config.active_record.dump_schema_after_migration = false
|
||||
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
# E-mails
|
||||
|
|
|
@ -19,8 +19,6 @@ Rails.application.configure do
|
|||
# loading is working properly before deploying your code.
|
||||
config.eager_load = ENV['CI'].present?
|
||||
|
||||
config.assets_digest = false
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
@ -32,6 +30,8 @@ Rails.application.configure do
|
|||
# Disable request forgery protection in test environment.
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
# Disable caching for Action Mailer templates even if Action Controller
|
||||
# caching is enabled.
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
config.action_mailer.default_options = { from: 'notifications@localhost' }
|
||||
|
@ -41,6 +41,10 @@ Rails.application.configure do
|
|||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Unlike controllers, the mailer instance doesn't have any context about the
|
||||
# incoming request so you'll need to provide the :host parameter yourself.
|
||||
config.action_mailer.default_url_options = { host: 'www.example.com' }
|
||||
|
||||
# Print deprecation notices to the stderr.
|
||||
config.active_support.deprecation = :stderr
|
||||
|
||||
|
@ -58,7 +62,6 @@ Rails.application.configure do
|
|||
# Raise exceptions for disallowed deprecations.
|
||||
config.active_support.disallowed_deprecation = :raise
|
||||
|
||||
config.i18n.default_locale = :en
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Tell Active Support which deprecation messages to disallow.
|
||||
|
|
5
config/initializers/allowed_private_addresses.rb
Normal file
5
config/initializers/allowed_private_addresses.rb
Normal 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
|
|
@ -60,6 +60,7 @@ ro:
|
|||
error:
|
||||
title: A apărut o eroare
|
||||
new:
|
||||
prompt_html: "%{client_name} ar dori să vă acceseze contul. <strong>Aprobați această solicitare numai dacă recunoașteți și aveți încredere în această sursă.</strong>"
|
||||
review_permissions: Revizuiți permisiunile
|
||||
title: Autorizare necesară
|
||||
show:
|
||||
|
@ -82,6 +83,7 @@ ro:
|
|||
access_denied: Proprietarul de resurse sau serverul de autorizare a refuzat cererea.
|
||||
credential_flow_not_configured: Fluxul Resurselor de Acreditări Parole a eșuat din cauza faptului că Doorkeeper.configure.resource_owner_from_credentials nu este configurat.
|
||||
invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată.
|
||||
invalid_code_challenge_method: Metoda de provocare a codului trebuie să fie S256, simplu nu este acceptată.
|
||||
invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client.
|
||||
invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid.
|
||||
invalid_request:
|
||||
|
@ -134,6 +136,7 @@ ro:
|
|||
media: Atașamente media
|
||||
mutes: Pus pe silențios
|
||||
notifications: Notificări
|
||||
profile: Profilul tău Mastodon
|
||||
push: Notificări push
|
||||
reports: Rapoarte
|
||||
search: Căutare
|
||||
|
@ -148,12 +151,23 @@ ro:
|
|||
scopes:
|
||||
admin:read: citește toate datele de pe server
|
||||
admin:read:accounts: citește informații sensibile ale tuturor conturilor
|
||||
admin:read:canonical_email_blocks: citește informații sensibile ale tuturor blocurilor de e-mail canonice
|
||||
admin:read:domain_allows: citește informații sensibile ale tuturor domeniilor permise
|
||||
admin:read:domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu
|
||||
admin:read:email_domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu de e-mail
|
||||
admin:read:ip_blocks: citește informații sensibile ale tuturor blocurilor IP
|
||||
admin:read:reports: citește informații sensibile din toate rapoartele și conturile raportate
|
||||
admin:write: modifică toate datele de pe server
|
||||
admin:write:accounts: efectuează acțiuni de moderare pe conturi
|
||||
admin:write:canonical_email_blocks: efectuează acțiuni de moderare pe blocurile de e-mail canonice
|
||||
admin:write:domain_allows: efectuează acțiuni de moderare pe domeniile permise
|
||||
admin:write:domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu
|
||||
admin:write:email_domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu de e-mail
|
||||
admin:write:ip_blocks: efectuează acțiuni de moderare pe blocurile IP
|
||||
admin:write:reports: efectuează acțiuni de moderare pe rapoarte
|
||||
crypto: utilizează criptare la ambele capete
|
||||
follow: modifică relațiile contului
|
||||
profile: citește doar informațiile de profil ale contului tău
|
||||
push: primește notificările tale push
|
||||
read: citește toate datele contului tău
|
||||
read:accounts: vede informațiile privind conturile
|
||||
|
|
|
@ -72,7 +72,7 @@ sv:
|
|||
revoke: Är du säker?
|
||||
index:
|
||||
authorized_at: Godkändes den %{date}
|
||||
description_html: Dessa applikationer har åtkomst till ditt konto genom API:et. Om det finns applikationer du inte känner igen här, eller om en applikation inte fungerar, kan du återkalla dess åtkomst.
|
||||
description_html: Detta är program som kan komma åt ditt konto med hjälp av API. Om det finns program som du inte känner igen här, eller om ett program är inte fungerar kan du återkalla dess åtkomst.
|
||||
last_used_at: Användes senast %{date}
|
||||
never_used: Aldrig använd
|
||||
scopes: Behörigheter
|
||||
|
|
|
@ -21,6 +21,7 @@ el:
|
|||
one: Ανάρτηση
|
||||
other: Αναρτήσεις
|
||||
posts_tab_heading: Αναρτήσεις
|
||||
self_follow_error: Δεν επιτρέπεται να ακολουθήσεις τον δικό σου λογαριασμό
|
||||
admin:
|
||||
account_actions:
|
||||
action: Εκτέλεση ενέργειας
|
||||
|
|
|
@ -193,6 +193,7 @@ en:
|
|||
create_domain_block: Create Domain Block
|
||||
create_email_domain_block: Create Email Domain Block
|
||||
create_ip_block: Create IP rule
|
||||
create_relay: Create Relay
|
||||
create_unavailable_domain: Create Unavailable Domain
|
||||
create_user_role: Create Role
|
||||
demote_user: Demote User
|
||||
|
@ -204,14 +205,17 @@ en:
|
|||
destroy_email_domain_block: Delete Email Domain Block
|
||||
destroy_instance: Purge Domain
|
||||
destroy_ip_block: Delete IP rule
|
||||
destroy_relay: Delete Relay
|
||||
destroy_status: Delete Post
|
||||
destroy_unavailable_domain: Delete Unavailable Domain
|
||||
destroy_user_role: Destroy Role
|
||||
disable_2fa_user: Disable 2FA
|
||||
disable_custom_emoji: Disable Custom Emoji
|
||||
disable_relay: Disable Relay
|
||||
disable_sign_in_token_auth_user: Disable Email Token Authentication for User
|
||||
disable_user: Disable User
|
||||
enable_custom_emoji: Enable Custom Emoji
|
||||
enable_relay: Enable Relay
|
||||
enable_sign_in_token_auth_user: Enable Email Token Authentication for User
|
||||
enable_user: Enable User
|
||||
force_cw_status: Add CW to Post
|
||||
|
@ -257,6 +261,7 @@ en:
|
|||
create_domain_block_html: "%{name} blocked domain %{target}"
|
||||
create_email_domain_block_html: "%{name} blocked email domain %{target}"
|
||||
create_ip_block_html: "%{name} created rule for IP %{target}"
|
||||
create_relay_html: "%{name} created a relay %{target}"
|
||||
create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}"
|
||||
create_user_role_html: "%{name} created %{target} role"
|
||||
demote_user_html: "%{name} demoted user %{target}"
|
||||
|
@ -268,14 +273,17 @@ en:
|
|||
destroy_email_domain_block_html: "%{name} unblocked email domain %{target}"
|
||||
destroy_instance_html: "%{name} purged domain %{target}"
|
||||
destroy_ip_block_html: "%{name} deleted rule for IP %{target}"
|
||||
destroy_relay_html: "%{name} deleted the relay %{target}"
|
||||
destroy_status_html: "%{name} removed post by %{target}"
|
||||
destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}"
|
||||
destroy_user_role_html: "%{name} deleted %{target} role"
|
||||
disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}"
|
||||
disable_custom_emoji_html: "%{name} disabled emoji %{target}"
|
||||
disable_relay_html: "%{name} disabled the relay %{target}"
|
||||
disable_sign_in_token_auth_user_html: "%{name} disabled email token authentication for %{target}"
|
||||
disable_user_html: "%{name} disabled login for user %{target}"
|
||||
enable_custom_emoji_html: "%{name} enabled emoji %{target}"
|
||||
enable_relay_html: "%{name} enabled the relay %{target}"
|
||||
enable_sign_in_token_auth_user_html: "%{name} enabled email token authentication for %{target}"
|
||||
enable_user_html: "%{name} enabled login for user %{target}"
|
||||
force_cw_status_html: "%{name} turned post by %{target} cw"
|
||||
|
|
|
@ -1368,6 +1368,44 @@ fo:
|
|||
merge_long: Varðveit verandi teigarøð og legg nýggjar afturat
|
||||
overwrite: Skriva omaná
|
||||
overwrite_long: Legg nýggj teigarøð inn fyri tey verandi
|
||||
overwrite_preambles:
|
||||
blocking_html:
|
||||
one: Tú ert í ferð við at <strong>útskifta blokeringslistan hjá tær</strong> við upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>útskifta blokeringslistan hjá tær</strong> við upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong>.
|
||||
bookmarks_html:
|
||||
one: Tú ert í ferð við at <strong>útskifta tíni bókamerki</strong> við upp til <strong>%{count} posti</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>útskifta tíni bókamerki</strong> við upp til <strong>%{count} postum</strong> frá <strong>%{filename}</strong>.
|
||||
domain_blocking_html:
|
||||
one: Tú ert í ferð við at <strong>útskifta navnaøkisblokeringslistan hjá tær</strong> við upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>útskifta navnaøkisblokeringslistan hjá tær</strong> við upp til <strong>%{count} navnaøkjum</strong> frá <strong>%{filename}</strong>.
|
||||
following_html:
|
||||
one: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong> og <strong>at gevast at fylgja øðrum</strong>.
|
||||
other: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong> og <strong>at gevast at fylgja øðrum</strong>.
|
||||
lists_html:
|
||||
one: Tú ert í ferð við at <strong>skifta listarnar hjá tær út</strong> við tað, sum er í <strong>%{filename}</strong>. Upp til <strong>%{count} konta</strong> verður løgd afturat nýggjum listum.
|
||||
other: Tú ert í ferð við at <strong>skifta listarnar hjá tær út</strong> við tað, sum er í <strong>%{filename}</strong>. Upp til <strong>%{count} kontur</strong> verða lagdar afturat nýggjum listum.
|
||||
muting_html:
|
||||
one: Tú ert í ferð við at <strong>útskifta listan hjá tær við doyvdum kontum</strong> við upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>útskifta listan hjá tær við doyvdum kontum</strong> við upp til <strong>%{count} kontum</strong> frá <strong>%{filename}</strong>.
|
||||
preambles:
|
||||
blocking_html:
|
||||
one: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
|
||||
bookmarks_html:
|
||||
one: Tú ert í ferð við at leggja upp til <strong>%{count} post</strong> frá <strong>%{filename}</strong> afturat tínum <strong>bókamerkjum</strong>.
|
||||
other: Tú ert í ferð við at leggja upp til <strong>%{count} postar</strong> frá <strong>%{filename}</strong> afturat tínum <strong>bókamerkjum</strong>.
|
||||
domain_blocking_html:
|
||||
one: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>blokera</strong> upp til <strong>%{count} navnaøki</strong> frá <strong>%{filename}</strong>.
|
||||
following_html:
|
||||
one: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>fylgja</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
|
||||
lists_html:
|
||||
one: Tú ert í ferð við at leggja upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong> afturat tínum <strong>listum</strong>. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat.
|
||||
other: Tú ert í ferð við at leggja upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong> afturat tínum <strong>listum</strong>. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat.
|
||||
muting_html:
|
||||
one: Tú ert í ferð við at <strong>doyva</strong> upp til <strong>%{count} kontu</strong> frá <strong>%{filename}</strong>.
|
||||
other: Tú ert í ferð við at <strong>doyva</strong> upp til <strong>%{count} kontur</strong> frá <strong>%{filename}</strong>.
|
||||
preface: Tú kanst innlesa dátur, sum tú hevur útlisið frá einum øðrum ambætara, so sum listar av fólki, sum tú fylgir ella blokerar.
|
||||
recent_imports: Feskar innflytingar
|
||||
states:
|
||||
|
|
|
@ -447,6 +447,7 @@ lv:
|
|||
resolve: Atrisināt domēnu
|
||||
not_permitted: Nav atļauta
|
||||
resolved_through_html: Atrisināts, izmantojot %{domain}
|
||||
title: Bloķētie e-pasta domēni
|
||||
export_domain_allows:
|
||||
new:
|
||||
title: Importēt domēnu atļaujas
|
||||
|
@ -872,6 +873,8 @@ lv:
|
|||
message_html: Tu neesi definējis nevienu servera nosacījumu.
|
||||
sidekiq_process_check:
|
||||
message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju
|
||||
software_version_check:
|
||||
action: Skatīt pieejamos atjauninājumus
|
||||
software_version_critical_check:
|
||||
action: Skatīt pieejamos atjauninājumus
|
||||
message_html: Ir pieejams kritisks Mastodon atjauninājums. Lūdzu, atjaunini to pēc iespējas ātrāk.
|
||||
|
@ -1668,6 +1671,8 @@ lv:
|
|||
webauthn_authentication: Drošības atslēgas
|
||||
severed_relationships:
|
||||
download: Lejupielādēt (%{count})
|
||||
event_type:
|
||||
user_domain_block: Jūs bloķējāt %{target_name}
|
||||
lost_followers: Zaudētie sekotāji
|
||||
lost_follows: Zaudētie sekojumi
|
||||
type: Notikums
|
||||
|
|
|
@ -65,7 +65,7 @@ ru:
|
|||
demote: Разжаловать
|
||||
destroyed_msg: Данные %{username} поставлены в очередь на удаление
|
||||
disable: Заморозка
|
||||
disable_sign_in_token_auth: Отключите аутентификацию с помощью маркера электронной почты
|
||||
disable_sign_in_token_auth: Отключить аутентификацию по e-mail кодам
|
||||
disable_two_factor_authentication: Отключить 2FA
|
||||
disabled: Отключено
|
||||
display_name: Отображаемое имя
|
||||
|
@ -74,7 +74,7 @@ ru:
|
|||
email: E-mail
|
||||
email_status: Статус e-mail
|
||||
enable: Включить
|
||||
enable_sign_in_token_auth: Включите аутентификацию с помощью маркера электронной почты
|
||||
enable_sign_in_token_auth: Включить аутентификацию по e-mail кодам
|
||||
enabled: Включен
|
||||
enabled_msg: Учётная запись %{username} успешно разморожена
|
||||
followers: Подписчики
|
||||
|
@ -147,8 +147,8 @@ ru:
|
|||
security_measures:
|
||||
only_password: Только пароль
|
||||
password_and_2fa: Пароль и 2FA
|
||||
sensitive: Отметить как «деликатного содержания»
|
||||
sensitized: отмечено как «деликатного характера»
|
||||
sensitive: Деликатный
|
||||
sensitized: отмечено как деликатный контент
|
||||
shared_inbox_url: URL общих входящих
|
||||
show:
|
||||
created_reports: Жалобы, отправленные с этой учётной записи
|
||||
|
@ -166,7 +166,7 @@ ru:
|
|||
unblock_email: Разблокировать e-mail адрес
|
||||
unblocked_email_msg: E-mail адрес %{username} разблокирован
|
||||
unconfirmed_email: Неподтверждённый e-mail
|
||||
undo_sensitized: Убрать отметку «деликатного содержания»
|
||||
undo_sensitized: Снять отметку "деликатный"
|
||||
undo_silenced: Отменить скрытие
|
||||
undo_suspension: Снять блокировку
|
||||
unsilenced_msg: Ограничения с учётной записи %{username} сняты успешно
|
||||
|
@ -1316,7 +1316,7 @@ ru:
|
|||
csv: CSV
|
||||
domain_blocks: Доменные блокировки
|
||||
lists: Списки
|
||||
mutes: Ваши игнорируете
|
||||
mutes: Ваши игнорируемые
|
||||
storage: Ваши файлы
|
||||
featured_tags:
|
||||
add_new: Добавить
|
||||
|
@ -1439,6 +1439,47 @@ ru:
|
|||
many: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
|
||||
one: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
|
||||
other: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> и <strong>отписаться от всех прочих</strong>.
|
||||
lists_html:
|
||||
few: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунта</strong>.
|
||||
many: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунтов</strong>.
|
||||
one: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будет добавлен <strong>%{count} аккаунт</strong>.
|
||||
other: Вы собираетесь <strong>заменить свои списки</strong> содержимым файла <strong>%{filename}</strong>. В новые списки будут добавлены <strong>%{count} аккаунтов</strong>.
|
||||
muting_html:
|
||||
few: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
many: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
one: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
|
||||
other: Вы собираетесь <strong>заменить свой список игнорируемых пользователей</strong> списком из <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
preambles:
|
||||
blocking_html:
|
||||
few: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
|
||||
many: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
one: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
|
||||
other: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
bookmarks_html:
|
||||
few: Вы собираетесь добавить <strong>%{count} поста</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
|
||||
many: Вы собираетесь добавить <strong>%{count} постов</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
|
||||
one: Вы собираетесь добавить <strong>%{count} пост</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
|
||||
other: Вы собираетесь добавить <strong>%{count} постов</strong> из файла <strong>%{filename}</strong> в свои <strong>закладки</strong>.
|
||||
domain_blocking_html:
|
||||
few: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} домена</strong> из файла <strong>%{filename}</strong>.
|
||||
many: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} доменов</strong> из файла <strong>%{filename}</strong>.
|
||||
one: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} домен</strong> из файла <strong>%{filename}</strong>.
|
||||
other: Вы собираетесь <strong>заблокировать</strong> <strong>%{count} доменов</strong> из файла <strong>%{filename}</strong>.
|
||||
following_html:
|
||||
few: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
|
||||
many: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
one: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
|
||||
other: Вы собираетесь <strong>подписаться</strong> на <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
lists_html:
|
||||
few: Вы собираетесь добавить <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
|
||||
many: Вы собираетесь добавить <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
|
||||
one: Вы собираетесь добавить <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
|
||||
other: Вы собираетесь добавить <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong> в свои <strong>списки</strong>. Если соответствующих списков нет, они будут созданы.
|
||||
muting_html:
|
||||
few: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунта</strong> из файла <strong>%{filename}</strong>.
|
||||
many: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
one: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунт</strong> из файла <strong>%{filename}</strong>.
|
||||
other: Вы собираетесь <strong>начать игнорировать</strong> <strong>%{count} аккаунтов</strong> из файла <strong>%{filename}</strong>.
|
||||
preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла.
|
||||
recent_imports: Недавно импортированное
|
||||
states:
|
||||
|
@ -1511,6 +1552,7 @@ ru:
|
|||
unsubscribe:
|
||||
action: Да, отписаться
|
||||
complete: Подписка отменена
|
||||
confirmation_html: Вы точно желаете отписаться от всех уведомления типа «%{type}», доставляемых из сервера Mastodon %{domain} на ваш адрес электронной почты %{email}? Вы всегда сможете подписаться снова в <a href="%{settings_path}">настройках e-mail уведомлений</a>.
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: любимые электронные письма с уведомлениями
|
||||
|
|
|
@ -9,7 +9,6 @@ ar:
|
|||
indexable: قد تظهر منشوراتك الموجهة للعامة في نتائج البحث على ماستدون. فالأشخاص الذين تفاعلوا مع منشوراتك قد يكون بمقدورهم البحث عنها بغظ النظر عن ذلك.
|
||||
note: 'يمكنك @ذكر أشخاص آخرين أو استعمال #الوسوم.'
|
||||
show_collections: سيستطيع الناس من تصفح متابعيك و متابعاتك. سيرى الأشخاص الذين تتبعهم أنك تتبعهم دون أي شك.
|
||||
unlocked: سيتمكن الآخرون من متابعتك دون طلب الموافقة. قم بتعطيله إن كنت ترغب في مراجعة تلك الطلبات يدويا باختيار قبول أو رفض المتابعين الجدد.
|
||||
account_alias:
|
||||
acct: ادخِل عنون الحساب username@domain الذي تودّ مغادرته
|
||||
account_migration:
|
||||
|
|
|
@ -4,7 +4,6 @@ ast:
|
|||
hints:
|
||||
account:
|
||||
note: 'Pues @mentar a otros perfiles o poner #etiquetes.'
|
||||
unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales.
|
||||
admin_account_action:
|
||||
text_html: Opcional. Pues usar la sintaxis de los artículos y amestar <a href="%{path}">alvertencies preconfiguraes</a> p'aforrar tiempu
|
||||
type_html: Escueyi qué facer con <strong>%{acct}</strong>
|
||||
|
|
|
@ -9,7 +9,6 @@ be:
|
|||
indexable: Вашыя публічныя допісы могуць з'яўляцца ў рэзультатах пошуку Mastodon. Людзі, якія ўзаемадзейнічалі з вашымі допісамі, усё роўна маюць магчымасць іх знаходзіць.
|
||||
note: 'Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі.'
|
||||
show_collections: Людзі змогуць праглядаць спіс вашых падпісак і падпісчыкаў. Людзі, на якіх вы падпісаны ў любым выпадку будуць бачыць, што вы іх чытаеце.
|
||||
unlocked: Людзі змогуць сачыць за вамі, не запытваючы пацвярджэння. Зніміце сцяжок, калі вы хочаце праглядаць запыты на падпіску і выбіраць, прымаць ці адхіляць новых падпісчыкаў.
|
||||
account_alias:
|
||||
acct: Прызначце карыстальнік@дамен уліковага запісу з якога вы хочаце пераехаць
|
||||
account_migration:
|
||||
|
|
|
@ -9,7 +9,6 @@ bg:
|
|||
indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо.
|
||||
note: 'Може да @споменавате други хора или #хаштагове.'
|
||||
show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това.
|
||||
unlocked: Хората ще могат да ви последват без изискване на одобрение. Размаркирайте, ако искате да преглеждате заявките за последване и изберете дали да приемете или отхвърлите новите последователи.
|
||||
account_alias:
|
||||
acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите
|
||||
account_migration:
|
||||
|
|
|
@ -9,7 +9,7 @@ ca:
|
|||
indexable: Els teus tuts públics poden aparèixer en els resultats de cerca de Mastodon. Les persones que han interaccionat amb el teus tuts seran sempre capaços de cercar-los.
|
||||
note: 'Pots @mencionar altra gent o #etiquetes.'
|
||||
show_collections: La gent podrà navegar pels teus seguits i seguidors. Qui segueixis sí que veurà que els segueixes.
|
||||
unlocked: La gent serà capaç de seguir-te sense sol·licitar-ho. Desmarca si vols revisar les sol·licituds i triar si acceptes o no els nous seguidors.
|
||||
unlocked: Us podran seguir sense la vostra aprovació. Desmarqueu si voleu moderar les peticions de seguiment i decidir quines autoritzeu o denegueu.
|
||||
account_alias:
|
||||
acct: Especifica l'usuari@domini del compte des d'on et vols traslladar
|
||||
account_migration:
|
||||
|
|
|
@ -9,7 +9,6 @@ cs:
|
|||
indexable: Vaše veřejné příspěvky se mohou objevit ve výsledcích vyhledávání na Mastodonu. Lidé, kteří s vašimi příspěvky interagovaly, je mohou stále vyhledávat.
|
||||
note: 'Můžete @zmínit jiné osoby nebo #hashtagy.'
|
||||
show_collections: Lidé budou moci procházet skrz sledující. Lidé, které sledujete, uvidí, že je sledujete bezohledně.
|
||||
unlocked: Lidé vás budou moci sledovat, aniž by vás žádali o schválení. Zrušte zaškrtnutí, pokud chcete zkontrolovat požadavky a zvolte, zda přijmete nebo odmítněte nové následovníky.
|
||||
account_alias:
|
||||
acct: Zadejte svůj účet, ze kterého se chcete přesunout jinam, ve formátu přezdívka@doména
|
||||
account_migration:
|
||||
|
|
|
@ -10,7 +10,6 @@ cy:
|
|||
indexable: Mae'n bosib y bydd eich postiadau cyhoeddus yn ymddangos yng nghanlyniadau chwilio ar Mastodon. Mae'n bosibl y bydd pobl sydd wedi rhyngweithio â'ch postiadau yn dal i allu eu chwilio.
|
||||
note: 'Gallwch @grybwyll pobl eraill neu #hashnodau.'
|
||||
show_collections: Bydd pobl yn gallu pori trwy'r rhai rydych yn eu dilyn a'ch dilynwyr. Bydd y bobl rydych chi'n eu dilyn yn gweld eich bod chi'n eu dilyn beth bynnag.
|
||||
unlocked: Bydd pobl yn gallu eich dilyn heb ofyn am ganiatâd. Dad-diciwch os ydych am adolygu ceisiadau dilyn a dewis a ydych am dderbyn neu wrthod dilynwyr newydd.
|
||||
account_alias:
|
||||
acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono
|
||||
account_migration:
|
||||
|
|
|
@ -10,7 +10,7 @@ da:
|
|||
indexable: Dine offentlige indlæg vil kunne vises i Mastodon-søgeresultater. Folk, som har interageret med dem, vil kunne finde dem uanset.
|
||||
note: 'Du kan @omtale andre personer eller #hashtags.'
|
||||
show_collections: Folk vil ikke kunne tjekke dine Følger og Følgere. Folk, du selv følger, vil stadig kunne se dette.
|
||||
unlocked: Folk vil kunne følge dig uden krav om godkendelse. Fjern markeringen, såfremt du ønsker at tjekke Følg-anmodninger og individuelt acceptere eller afvise nye Følgere.
|
||||
unlocked: Man vil kunne følges af folk uden først at godkende dem. Ønsker man at gennemgå Følg-anmodninger og individuelt acceptere/afvise nye følgere, så fjern markeringen.
|
||||
account_alias:
|
||||
acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte
|
||||
account_migration:
|
||||
|
|
|
@ -9,7 +9,6 @@ el:
|
|||
indexable: Οι δημόσιες δημοσιεύσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις δημοσιεύσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει.
|
||||
note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.'
|
||||
show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει.
|
||||
unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να αξιολογείς τα αιτήματα ακολούθησης και να επιλέξεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους.
|
||||
account_alias:
|
||||
acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς
|
||||
account_migration:
|
||||
|
|
|
@ -9,7 +9,6 @@ en-GB:
|
|||
indexable: Your public posts may appear in search results on Mastodon. People who have interacted with your posts may be able to search them regardless.
|
||||
note: 'You can @mention other people or #hashtags.'
|
||||
show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless.
|
||||
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers.
|
||||
account_alias:
|
||||
acct: Specify the username@domain of the account you want to move from
|
||||
account_migration:
|
||||
|
|
|
@ -12,7 +12,7 @@ en:
|
|||
locked: People will request to follow you and you will be able to either accept or reject new followers.
|
||||
note: 'You can @mention other people or #hashtags.'
|
||||
show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless.
|
||||
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers.
|
||||
unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and choose whether to accept or reject new followers.
|
||||
account_alias:
|
||||
acct: Specify the username@domain of the account you want to move from
|
||||
account_migration:
|
||||
|
|
|
@ -10,7 +10,7 @@ eo:
|
|||
indexable: Viaj publikaj afiŝoj povas aperi en serĉrezultoj ĉe Mastodon. Homoj, kiuj interagis kun viaj afiŝoj, eble povos serĉi ilin sendepende.
|
||||
note: 'Vi povas @mencii aliajn homojn aŭ #haŝetikedoj.'
|
||||
show_collections: Homoj povos foliumi viajn sekvatojn kaj sekvantojn. Homoj, kiujn vi sekvas, vidos, ke vi sekvas ilin ĉiaokaze.
|
||||
unlocked: Homoj povos sekvi vin sen peto de aprobo. Malelektu se vi volas kontroli petojn de sekvado kaj elekti, ĉu akcepti aŭ malakcepti novajn sekvantojn.
|
||||
unlocked: Homoj povos sekvi vin sen peti aprobon. Malmarku ĉu vi volas revizii sekvajn petojn kaj elektu ĉu akcepti aŭ malakcepti novajn sekvantojn.
|
||||
account_alias:
|
||||
acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi
|
||||
account_migration:
|
||||
|
|
|
@ -10,7 +10,7 @@ es-AR:
|
|||
indexable: Tus mensajes públicos pueden aparecer en los resultados de la búsqueda en Mastodon. La gente que interactuó con tus mensajes puede ser capaz de buscarlos sin importar el momento.
|
||||
note: 'Podés @mencionar otras cuentas o usar #etiquetas.'
|
||||
show_collections: La gente podrá navegar a través de tus seguidos y seguidores. Sin embargo, la gente que sigás, sabrá que lo estás haciendo.
|
||||
unlocked: La gente podrá seguirte sin solicitar aprobación. Desmarcá si querés revisar las solicitudes de seguimiento y elegir si aceptar o rechazar nuevos seguidores.
|
||||
unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores.
|
||||
account_alias:
|
||||
acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte
|
||||
account_migration:
|
||||
|
|
|
@ -10,7 +10,7 @@ es-MX:
|
|||
indexable: Tus publicaciones públicas pueden aparecer en los resultados de búsqueda en Mastodon. Las personas que han interactuado con tus publicaciones pueden buscarlas en cualquier momento.
|
||||
note: 'Puedes @mencionar a otra gente o #hashtags.'
|
||||
show_collections: Las personas pueden navegar a través de tus seguidos y seguidores. Las personas que te siguen pueden ver que las sigues.
|
||||
unlocked: Las personas pueden seguirte sin solicitar la aprobación. No lo selecciones si quieres revisar las solicitudes de seguimiento y elegir si aceptas o rechazas a nuevos seguidores.
|
||||
unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores.
|
||||
account_alias:
|
||||
acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar
|
||||
account_migration:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue