mirror of
https://git.kescher.at/CatCatNya/catstodon.git
synced 2024-11-28 16:21:37 +01:00
Merge commit '491033c86cc9c29302bfe68cc94dabad82ded4cc' into glitch-soc/merge-upstream
This commit is contained in:
commit
402c1e116d
74 changed files with 1004 additions and 254 deletions
61
Gemfile.lock
61
Gemfile.lock
|
@ -100,8 +100,8 @@ GEM
|
||||||
attr_required (1.0.2)
|
attr_required (1.0.2)
|
||||||
awrence (1.2.1)
|
awrence (1.2.1)
|
||||||
aws-eventstream (1.3.0)
|
aws-eventstream (1.3.0)
|
||||||
aws-partitions (1.966.0)
|
aws-partitions (1.969.0)
|
||||||
aws-sdk-core (3.201.5)
|
aws-sdk-core (3.202.1)
|
||||||
aws-eventstream (~> 1, >= 1.3.0)
|
aws-eventstream (~> 1, >= 1.3.0)
|
||||||
aws-partitions (~> 1, >= 1.651.0)
|
aws-partitions (~> 1, >= 1.651.0)
|
||||||
aws-sigv4 (~> 1.9)
|
aws-sigv4 (~> 1.9)
|
||||||
|
@ -164,20 +164,22 @@ GEM
|
||||||
activesupport (>= 5.2)
|
activesupport (>= 5.2)
|
||||||
elasticsearch (>= 7.14.0, < 8)
|
elasticsearch (>= 7.14.0, < 8)
|
||||||
elasticsearch-dsl
|
elasticsearch-dsl
|
||||||
|
childprocess (5.1.0)
|
||||||
|
logger (~> 1.5)
|
||||||
chunky_png (1.4.0)
|
chunky_png (1.4.0)
|
||||||
climate_control (1.2.0)
|
climate_control (1.2.0)
|
||||||
cocoon (1.2.15)
|
cocoon (1.2.15)
|
||||||
color_diff (0.1)
|
color_diff (0.1)
|
||||||
concurrent-ruby (1.3.4)
|
concurrent-ruby (1.3.4)
|
||||||
connection_pool (2.4.1)
|
connection_pool (2.4.1)
|
||||||
cose (1.3.0)
|
cose (1.3.1)
|
||||||
cbor (~> 0.5.9)
|
cbor (~> 0.5.9)
|
||||||
openssl-signature_algorithm (~> 1.0)
|
openssl-signature_algorithm (~> 1.0)
|
||||||
crack (1.0.0)
|
crack (1.0.0)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
rexml
|
rexml
|
||||||
crass (1.0.6)
|
crass (1.0.6)
|
||||||
css_parser (1.17.1)
|
css_parser (1.19.0)
|
||||||
addressable
|
addressable
|
||||||
csv (3.3.0)
|
csv (3.3.0)
|
||||||
database_cleaner-active_record (2.2.0)
|
database_cleaner-active_record (2.2.0)
|
||||||
|
@ -206,20 +208,21 @@ GEM
|
||||||
diff-lcs (1.5.1)
|
diff-lcs (1.5.1)
|
||||||
discard (1.3.0)
|
discard (1.3.0)
|
||||||
activerecord (>= 4.2, < 8)
|
activerecord (>= 4.2, < 8)
|
||||||
docile (1.4.0)
|
docile (1.4.1)
|
||||||
domain_name (0.6.20240107)
|
domain_name (0.6.20240107)
|
||||||
doorkeeper (5.7.1)
|
doorkeeper (5.7.1)
|
||||||
railties (>= 5)
|
railties (>= 5)
|
||||||
dotenv (3.1.2)
|
dotenv (3.1.2)
|
||||||
drb (2.2.1)
|
drb (2.2.1)
|
||||||
ed25519 (1.3.0)
|
ed25519 (1.3.0)
|
||||||
elasticsearch (7.17.10)
|
elasticsearch (7.17.11)
|
||||||
elasticsearch-api (= 7.17.10)
|
elasticsearch-api (= 7.17.11)
|
||||||
elasticsearch-transport (= 7.17.10)
|
elasticsearch-transport (= 7.17.11)
|
||||||
elasticsearch-api (7.17.10)
|
elasticsearch-api (7.17.11)
|
||||||
multi_json
|
multi_json
|
||||||
elasticsearch-dsl (0.1.10)
|
elasticsearch-dsl (0.1.10)
|
||||||
elasticsearch-transport (7.17.10)
|
elasticsearch-transport (7.17.11)
|
||||||
|
base64
|
||||||
faraday (>= 1, < 3)
|
faraday (>= 1, < 3)
|
||||||
multi_json
|
multi_json
|
||||||
email_spec (2.3.0)
|
email_spec (2.3.0)
|
||||||
|
@ -251,7 +254,7 @@ GEM
|
||||||
faraday-httpclient (1.0.1)
|
faraday-httpclient (1.0.1)
|
||||||
faraday-multipart (1.0.4)
|
faraday-multipart (1.0.4)
|
||||||
multipart-post (~> 2)
|
multipart-post (~> 2)
|
||||||
faraday-net_http (1.0.1)
|
faraday-net_http (1.0.2)
|
||||||
faraday-net_http_persistent (1.2.0)
|
faraday-net_http_persistent (1.2.0)
|
||||||
faraday-patron (1.0.0)
|
faraday-patron (1.0.0)
|
||||||
faraday-rack (1.0.0)
|
faraday-rack (1.0.0)
|
||||||
|
@ -308,11 +311,12 @@ GEM
|
||||||
rainbow
|
rainbow
|
||||||
rubocop (>= 1.0)
|
rubocop (>= 1.0)
|
||||||
sysexits (~> 1.1)
|
sysexits (~> 1.1)
|
||||||
hashdiff (1.1.0)
|
hashdiff (1.1.1)
|
||||||
hashie (5.0.0)
|
hashie (5.0.0)
|
||||||
hcaptcha (7.1.0)
|
hcaptcha (7.1.0)
|
||||||
json
|
json
|
||||||
highline (3.0.1)
|
highline (3.1.1)
|
||||||
|
reline
|
||||||
hiredis (0.6.3)
|
hiredis (0.6.3)
|
||||||
hkdf (0.3.0)
|
hkdf (0.3.0)
|
||||||
htmlentities (4.3.4)
|
htmlentities (4.3.4)
|
||||||
|
@ -392,8 +396,9 @@ GEM
|
||||||
mime-types
|
mime-types
|
||||||
terrapin (>= 0.6.0, < 2.0)
|
terrapin (>= 0.6.0, < 2.0)
|
||||||
language_server-protocol (3.17.0.3)
|
language_server-protocol (3.17.0.3)
|
||||||
launchy (2.5.2)
|
launchy (3.0.1)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
|
childprocess (~> 5.0)
|
||||||
letter_opener (1.10.0)
|
letter_opener (1.10.0)
|
||||||
launchy (>= 2.2, < 4)
|
launchy (>= 2.2, < 4)
|
||||||
letter_opener_web (3.0.0)
|
letter_opener_web (3.0.0)
|
||||||
|
@ -430,19 +435,19 @@ GEM
|
||||||
memory_profiler (1.0.2)
|
memory_profiler (1.0.2)
|
||||||
mime-types (3.5.2)
|
mime-types (3.5.2)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2024.0702)
|
mime-types-data (3.2024.0820)
|
||||||
mini_mime (1.1.5)
|
mini_mime (1.1.5)
|
||||||
mini_portile2 (2.8.7)
|
mini_portile2 (2.8.7)
|
||||||
minitest (5.25.1)
|
minitest (5.25.1)
|
||||||
msgpack (1.7.2)
|
msgpack (1.7.2)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.4.0)
|
multipart-post (2.4.1)
|
||||||
mutex_m (0.2.0)
|
mutex_m (0.2.0)
|
||||||
net-http (0.4.1)
|
net-http (0.4.1)
|
||||||
uri
|
uri
|
||||||
net-http-persistent (4.0.2)
|
net-http-persistent (4.0.2)
|
||||||
connection_pool (~> 2.2)
|
connection_pool (~> 2.2)
|
||||||
net-imap (0.4.14)
|
net-imap (0.4.15)
|
||||||
date
|
date
|
||||||
net-protocol
|
net-protocol
|
||||||
net-ldap (0.19.0)
|
net-ldap (0.19.0)
|
||||||
|
@ -581,8 +586,8 @@ GEM
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
ostruct (0.6.0)
|
ostruct (0.6.0)
|
||||||
ox (2.14.18)
|
ox (2.14.18)
|
||||||
parallel (1.25.1)
|
parallel (1.26.3)
|
||||||
parser (3.3.4.0)
|
parser (3.3.4.2)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
racc
|
racc
|
||||||
parslet (2.0.0)
|
parslet (2.0.0)
|
||||||
|
@ -591,9 +596,9 @@ GEM
|
||||||
pg (1.5.7)
|
pg (1.5.7)
|
||||||
pghero (3.6.0)
|
pghero (3.6.0)
|
||||||
activerecord (>= 6.1)
|
activerecord (>= 6.1)
|
||||||
premailer (1.23.0)
|
premailer (1.27.0)
|
||||||
addressable
|
addressable
|
||||||
css_parser (>= 1.12.0)
|
css_parser (>= 1.19.0)
|
||||||
htmlentities (>= 4.0.0)
|
htmlentities (>= 4.0.0)
|
||||||
premailer-rails (1.12.0)
|
premailer-rails (1.12.0)
|
||||||
actionmailer (>= 3)
|
actionmailer (>= 3)
|
||||||
|
@ -699,7 +704,7 @@ GEM
|
||||||
rexml (3.3.6)
|
rexml (3.3.6)
|
||||||
strscan
|
strscan
|
||||||
rotp (6.3.0)
|
rotp (6.3.0)
|
||||||
rouge (4.2.1)
|
rouge (4.3.0)
|
||||||
rpam2 (4.0.2)
|
rpam2 (4.0.2)
|
||||||
rqrcode (2.2.0)
|
rqrcode (2.2.0)
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
|
@ -744,7 +749,7 @@ GEM
|
||||||
rubocop-ast (>= 1.31.1, < 2.0)
|
rubocop-ast (>= 1.31.1, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 2.4.0, < 3.0)
|
||||||
rubocop-ast (1.31.3)
|
rubocop-ast (1.32.1)
|
||||||
parser (>= 3.3.1.0)
|
parser (>= 3.3.1.0)
|
||||||
rubocop-capybara (2.21.0)
|
rubocop-capybara (2.21.0)
|
||||||
rubocop (~> 1.41)
|
rubocop (~> 1.41)
|
||||||
|
@ -835,9 +840,9 @@ GEM
|
||||||
climate_control
|
climate_control
|
||||||
test-prof (1.4.1)
|
test-prof (1.4.1)
|
||||||
thor (1.3.2)
|
thor (1.3.2)
|
||||||
tilt (2.3.0)
|
tilt (2.4.0)
|
||||||
timeout (0.4.1)
|
timeout (0.4.1)
|
||||||
tpm-key_attestation (0.12.0)
|
tpm-key_attestation (0.12.1)
|
||||||
bindata (~> 2.4)
|
bindata (~> 2.4)
|
||||||
openssl (> 2.0)
|
openssl (> 2.0)
|
||||||
openssl-signature_algorithm (~> 1.0)
|
openssl-signature_algorithm (~> 1.0)
|
||||||
|
@ -862,7 +867,7 @@ GEM
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.9.1)
|
unf_ext (0.0.9.1)
|
||||||
unicode-display_width (2.5.0)
|
unicode-display_width (2.5.0)
|
||||||
uri (0.13.0)
|
uri (0.13.1)
|
||||||
validate_email (0.1.6)
|
validate_email (0.1.6)
|
||||||
activemodel (>= 3.0)
|
activemodel (>= 3.0)
|
||||||
mail (>= 2.2.5)
|
mail (>= 2.2.5)
|
||||||
|
@ -1057,7 +1062,7 @@ DEPENDENCIES
|
||||||
xorcist (~> 1.1)
|
xorcist (~> 1.1)
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 3.3.2p78
|
ruby 3.3.4p94
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.5.11
|
2.5.18
|
||||||
|
|
|
@ -13,7 +13,6 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
def index
|
def index
|
||||||
with_read_replica do
|
with_read_replica do
|
||||||
@notifications = load_notifications
|
@notifications = load_notifications
|
||||||
@group_metadata = load_group_metadata
|
|
||||||
@grouped_notifications = load_grouped_notifications
|
@grouped_notifications = load_grouped_notifications
|
||||||
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
|
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
|
||||||
@presenter = GroupedNotificationsPresenter.new(@grouped_notifications, expand_accounts: expand_accounts_param)
|
@presenter = GroupedNotificationsPresenter.new(@grouped_notifications, expand_accounts: expand_accounts_param)
|
||||||
|
@ -34,7 +33,7 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
'app.notification_grouping.expand_accounts_param' => expand_accounts_param
|
'app.notification_grouping.expand_accounts_param' => expand_accounts_param
|
||||||
)
|
)
|
||||||
|
|
||||||
render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata, expand_accounts: expand_accounts_param
|
render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, expand_accounts: expand_accounts_param
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -48,7 +47,7 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@notification = current_account.notifications.without_suspended.find_by!(group_key: params[:id])
|
@notification = current_account.notifications.without_suspended.find_by!(group_key: params[:id])
|
||||||
presenter = GroupedNotificationsPresenter.new([NotificationGroup.from_notification(@notification)])
|
presenter = GroupedNotificationsPresenter.new(NotificationGroup.from_notifications([@notification]))
|
||||||
render json: presenter, serializer: REST::DedupNotificationGroupSerializer
|
render json: presenter, serializer: REST::DedupNotificationGroupSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -77,22 +76,9 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_group_metadata
|
|
||||||
return {} if @notifications.empty?
|
|
||||||
|
|
||||||
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_group_metadata') do
|
|
||||||
browserable_account_notifications
|
|
||||||
.where(group_key: @notifications.filter_map(&:group_key))
|
|
||||||
.where(id: (@notifications.last.id)..(@notifications.first.id))
|
|
||||||
.group(:group_key)
|
|
||||||
.pluck(:group_key, 'min(notifications.id) as min_id', 'max(notifications.id) as max_id', 'max(notifications.created_at) as latest_notification_at')
|
|
||||||
.to_h { |group_key, min_id, max_id, latest_notification_at| [group_key, { min_id: min_id, max_id: max_id, latest_notification_at: latest_notification_at }] }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def load_grouped_notifications
|
def load_grouped_notifications
|
||||||
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_grouped_notifications') do
|
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_grouped_notifications') do
|
||||||
@notifications.map { |notification| NotificationGroup.from_notification(notification, max_id: @group_metadata.dig(notification.group_key, :max_id), grouped_types: params[:grouped_types]) }
|
NotificationGroup.from_notifications(@notifications, pagination_range: (@notifications.last.id)..(@notifications.first.id), grouped_types: params[:grouped_types])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "Блокирате ли потребителя?",
|
"block_modal.title": "Блокирате ли потребителя?",
|
||||||
"block_modal.you_wont_see_mentions": "Няма да виждате публикациите, които ги споменават.",
|
"block_modal.you_wont_see_mentions": "Няма да виждате публикациите, които ги споменават.",
|
||||||
"boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път",
|
"boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път",
|
||||||
|
"boost_modal.reblog": "Подсилвате ли публикация?",
|
||||||
|
"boost_modal.undo_reblog": "Без подсилване на публикация ли?",
|
||||||
"bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката",
|
"bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката",
|
||||||
"bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.",
|
"bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.",
|
||||||
"bundle_column_error.error.title": "О, не!",
|
"bundle_column_error.error.title": "О, не!",
|
||||||
|
@ -349,6 +351,14 @@
|
||||||
"hashtag.follow": "Следване на хаштаг",
|
"hashtag.follow": "Следване на хаштаг",
|
||||||
"hashtag.unfollow": "Спиране на следване на хаштаг",
|
"hashtag.unfollow": "Спиране на следване на хаштаг",
|
||||||
"hashtags.and_other": "…и {count, plural, other {# още}}",
|
"hashtags.and_other": "…и {count, plural, other {# още}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Последователи за този профил може да липсват.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Последванията за този профил може да липсват.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Някои публикации от този профил може да липсват.",
|
||||||
|
"hints.profiles.see_more_followers": "Преглед на още последователи на {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Преглед на още последвания на {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Преглед на още публикации на {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Отговори от други сървъри може да липсват.",
|
||||||
|
"hints.threads.see_more": "Преглед на още отговори на {domain}",
|
||||||
"home.column_settings.show_reblogs": "Показване на подсилванията",
|
"home.column_settings.show_reblogs": "Показване на подсилванията",
|
||||||
"home.column_settings.show_replies": "Показване на отговорите",
|
"home.column_settings.show_replies": "Показване на отговорите",
|
||||||
"home.hide_announcements": "Скриване на оповестяванията",
|
"home.hide_announcements": "Скриване на оповестяванията",
|
||||||
|
@ -446,6 +456,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Няма да виждате споменаващите ги публикации.",
|
"mute_modal.you_wont_see_mentions": "Няма да виждате споменаващите ги публикации.",
|
||||||
"mute_modal.you_wont_see_posts": "Още могат да виждат публикациите ви, но вие техните не.",
|
"mute_modal.you_wont_see_posts": "Още могат да виждат публикациите ви, но вие техните не.",
|
||||||
"navigation_bar.about": "Относно",
|
"navigation_bar.about": "Относно",
|
||||||
|
"navigation_bar.administration": "Администрация",
|
||||||
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
||||||
"navigation_bar.blocks": "Блокирани потребители",
|
"navigation_bar.blocks": "Блокирани потребители",
|
||||||
"navigation_bar.bookmarks": "Отметки",
|
"navigation_bar.bookmarks": "Отметки",
|
||||||
|
@ -462,6 +473,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Последвания и последователи",
|
"navigation_bar.follows_and_followers": "Последвания и последователи",
|
||||||
"navigation_bar.lists": "Списъци",
|
"navigation_bar.lists": "Списъци",
|
||||||
"navigation_bar.logout": "Излизане",
|
"navigation_bar.logout": "Излизане",
|
||||||
|
"navigation_bar.moderation": "Модериране",
|
||||||
"navigation_bar.mutes": "Заглушени потребители",
|
"navigation_bar.mutes": "Заглушени потребители",
|
||||||
"navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.",
|
"navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.",
|
||||||
"navigation_bar.personal": "Лично",
|
"navigation_bar.personal": "Лично",
|
||||||
|
@ -477,10 +489,17 @@
|
||||||
"notification.admin.report_statuses": "{name} докладва {target} за {category}",
|
"notification.admin.report_statuses": "{name} докладва {target} за {category}",
|
||||||
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
||||||
"notification.admin.sign_up": "{name} се регистрира",
|
"notification.admin.sign_up": "{name} се регистрира",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} се регистрираха",
|
||||||
"notification.favourite": "{name} направи любима публикацията ви",
|
"notification.favourite": "{name} направи любима публикацията ви",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name} и <a>{count, plural, one {# друг} other {# други}}</a> направиха любима ваша публикация",
|
||||||
"notification.follow": "{name} ви последва",
|
"notification.follow": "{name} ви последва",
|
||||||
|
"notification.follow.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} ви последваха",
|
||||||
"notification.follow_request": "{name} поиска да ви последва",
|
"notification.follow_request": "{name} поиска да ви последва",
|
||||||
|
"notification.follow_request.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} поискаха да ви последват",
|
||||||
"notification.label.mention": "Споменаване",
|
"notification.label.mention": "Споменаване",
|
||||||
|
"notification.label.private_mention": "Частно споменаване",
|
||||||
|
"notification.label.private_reply": "Личен отговор",
|
||||||
|
"notification.label.reply": "Отговор",
|
||||||
"notification.mention": "Споменаване",
|
"notification.mention": "Споменаване",
|
||||||
"notification.moderation-warning.learn_more": "Научете повече",
|
"notification.moderation-warning.learn_more": "Научете повече",
|
||||||
"notification.moderation_warning": "Получихте предупреждение за модериране",
|
"notification.moderation_warning": "Получихте предупреждение за модериране",
|
||||||
|
@ -494,6 +513,7 @@
|
||||||
"notification.own_poll": "Анкетата ви приключи",
|
"notification.own_poll": "Анкетата ви приключи",
|
||||||
"notification.poll": "Анкета, в която гласувахте, приключи",
|
"notification.poll": "Анкета, в която гласувахте, приключи",
|
||||||
"notification.reblog": "{name} подсили ваша публикация",
|
"notification.reblog": "{name} подсили ваша публикация",
|
||||||
|
"notification.reblog.name_and_others_with_link": "{name} и <a>{count, plural, one {# друг} other {# други}}</a> подсилиха ваша публикация",
|
||||||
"notification.relationships_severance_event": "Изгуби се връзката с {name}",
|
"notification.relationships_severance_event": "Изгуби се връзката с {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Администратор от {from} спря {target}, което значи че повече не може да получавате новости от тях или да взаимодействате с тях.",
|
"notification.relationships_severance_event.account_suspension": "Администратор от {from} спря {target}, което значи че повече не може да получавате новости от тях или да взаимодействате с тях.",
|
||||||
"notification.relationships_severance_event.domain_block": "Администратор от {from} блокира {target}, вкючващо {followersCount} от последователите ви и {followingCount, plural, one {# акаунт, който} other {# акаунта, които}} следвате.",
|
"notification.relationships_severance_event.domain_block": "Администратор от {from} блокира {target}, вкючващо {followersCount} от последователите ви и {followingCount, plural, one {# акаунт, който} other {# акаунта, които}} следвате.",
|
||||||
|
@ -502,6 +522,9 @@
|
||||||
"notification.status": "{name} току-що публикува",
|
"notification.status": "{name} току-що публикува",
|
||||||
"notification.update": "{name} промени публикация",
|
"notification.update": "{name} промени публикация",
|
||||||
"notification_requests.accept": "Приемам",
|
"notification_requests.accept": "Приемам",
|
||||||
|
"notification_requests.confirm_accept_multiple.message": "На път сте да приемете {count, plural, one {едно известие за заявка} other {# известия за заявки}}. Наистина ли искате да продължите?",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Приемате ли заявките за известие?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Отхвърляте ли заявките за известие?",
|
||||||
"notification_requests.dismiss": "Отхвърлям",
|
"notification_requests.dismiss": "Отхвърлям",
|
||||||
"notification_requests.edit_selection": "Редактиране",
|
"notification_requests.edit_selection": "Редактиране",
|
||||||
"notification_requests.exit_selection": "Готово",
|
"notification_requests.exit_selection": "Готово",
|
||||||
|
@ -561,6 +584,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Хора, които не следвате",
|
"notifications.policy.filter_not_following_title": "Хора, които не следвате",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Филтрирано, освен ако е отговор към ваше собствено споменаване или ако следвате подателя",
|
"notifications.policy.filter_private_mentions_hint": "Филтрирано, освен ако е отговор към ваше собствено споменаване или ако следвате подателя",
|
||||||
"notifications.policy.filter_private_mentions_title": "Непоискани частни споменавания",
|
"notifications.policy.filter_private_mentions_title": "Непоискани частни споменавания",
|
||||||
|
"notifications.policy.title": "Управление на известията от…",
|
||||||
"notifications_permission_banner.enable": "Включване на известията на работния плот",
|
"notifications_permission_banner.enable": "Включване на известията на работния плот",
|
||||||
"notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.",
|
"notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.",
|
||||||
"notifications_permission_banner.title": "Никога не пропускайте нищо",
|
"notifications_permission_banner.title": "Никога не пропускайте нищо",
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
"account.unblock_domain": "Malbloki la domajnon {domain}",
|
"account.unblock_domain": "Malbloki la domajnon {domain}",
|
||||||
"account.unblock_short": "Malbloki",
|
"account.unblock_short": "Malbloki",
|
||||||
"account.unendorse": "Ne plu rekomendi ĉe la profilo",
|
"account.unendorse": "Ne plu rekomendi ĉe la profilo",
|
||||||
"account.unfollow": "Malaboni",
|
"account.unfollow": "Ĉesi sekvi",
|
||||||
"account.unmute": "Ne plu silentigi @{name}",
|
"account.unmute": "Ne plu silentigi @{name}",
|
||||||
"account.unmute_notifications_short": "Malsilentigu Sciigojn",
|
"account.unmute_notifications_short": "Malsilentigu Sciigojn",
|
||||||
"account.unmute_short": "Ne plu silentigi",
|
"account.unmute_short": "Ne plu silentigi",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "See info ei ole sellel serveril saadavaks tehtud.",
|
"about.not_available": "See info ei ole sellel serveril saadavaks tehtud.",
|
||||||
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
||||||
"about.rules": "Serveri reeglid",
|
"about.rules": "Serveri reeglid",
|
||||||
|
"account.account_note_header": "Isiklik märge",
|
||||||
"account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
|
"account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
|
||||||
"account.badges.bot": "Robot",
|
"account.badges.bot": "Robot",
|
||||||
"account.badges.group": "Grupp",
|
"account.badges.group": "Grupp",
|
||||||
|
@ -96,6 +97,8 @@
|
||||||
"block_modal.title": "Blokeeri kasutaja?",
|
"block_modal.title": "Blokeeri kasutaja?",
|
||||||
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
|
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
|
||||||
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
|
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
|
||||||
|
"boost_modal.reblog": "Jagada postitust?",
|
||||||
|
"boost_modal.undo_reblog": "Tühista postituse jagamine?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
|
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
|
||||||
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
|
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
|
||||||
"bundle_column_error.error.title": "Oh, ei!",
|
"bundle_column_error.error.title": "Oh, ei!",
|
||||||
|
@ -169,21 +172,30 @@
|
||||||
"confirmations.block.confirm": "Blokeeri",
|
"confirmations.block.confirm": "Blokeeri",
|
||||||
"confirmations.delete.confirm": "Kustuta",
|
"confirmations.delete.confirm": "Kustuta",
|
||||||
"confirmations.delete.message": "Oled kindel, et soovid postituse kustutada?",
|
"confirmations.delete.message": "Oled kindel, et soovid postituse kustutada?",
|
||||||
|
"confirmations.delete.title": "Kustutada postitus?",
|
||||||
"confirmations.delete_list.confirm": "Kustuta",
|
"confirmations.delete_list.confirm": "Kustuta",
|
||||||
"confirmations.delete_list.message": "Oled kindel, et soovid selle loetelu pöördumatult kustutada?",
|
"confirmations.delete_list.message": "Oled kindel, et soovid selle loetelu pöördumatult kustutada?",
|
||||||
|
"confirmations.delete_list.title": "Kustutada loetelu?",
|
||||||
"confirmations.discard_edit_media.confirm": "Hülga",
|
"confirmations.discard_edit_media.confirm": "Hülga",
|
||||||
"confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
|
"confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
|
||||||
"confirmations.edit.confirm": "Muuda",
|
"confirmations.edit.confirm": "Muuda",
|
||||||
"confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
|
"confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
|
||||||
|
"confirmations.edit.title": "Kirjutada postitus üle?",
|
||||||
"confirmations.logout.confirm": "Välju",
|
"confirmations.logout.confirm": "Välju",
|
||||||
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
|
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
|
||||||
|
"confirmations.logout.title": "Logida välja?",
|
||||||
"confirmations.mute.confirm": "Vaigista",
|
"confirmations.mute.confirm": "Vaigista",
|
||||||
"confirmations.redraft.confirm": "Kustuta & taasalusta",
|
"confirmations.redraft.confirm": "Kustuta & taasalusta",
|
||||||
"confirmations.redraft.message": "Kindel, et soovid postituse kustutada ja võtta uue aluseks? Lemmikuks märkimised ja jagamised lähevad kaotsi ning vastused jäävad ilma algse postituseta.",
|
"confirmations.redraft.message": "Kindel, et soovid postituse kustutada ja võtta uue aluseks? Lemmikuks märkimised ja jagamised lähevad kaotsi ning vastused jäävad ilma algse postituseta.",
|
||||||
|
"confirmations.redraft.title": "Kustudada ja luua postituse mustand?",
|
||||||
"confirmations.reply.confirm": "Vasta",
|
"confirmations.reply.confirm": "Vasta",
|
||||||
"confirmations.reply.message": "Praegu vastamine kirjutab hetkel koostatava sõnumi üle. Oled kindel, et soovid jätkata?",
|
"confirmations.reply.message": "Praegu vastamine kirjutab hetkel koostatava sõnumi üle. Oled kindel, et soovid jätkata?",
|
||||||
|
"confirmations.reply.title": "Kirjutada postitus üle?",
|
||||||
"confirmations.unfollow.confirm": "Ära jälgi",
|
"confirmations.unfollow.confirm": "Ära jälgi",
|
||||||
"confirmations.unfollow.message": "Oled kindel, et ei soovi rohkem jälgida kasutajat {name}?",
|
"confirmations.unfollow.message": "Oled kindel, et ei soovi rohkem jälgida kasutajat {name}?",
|
||||||
|
"confirmations.unfollow.title": "Ei jälgi enam kasutajat?",
|
||||||
|
"content_warning.hide": "Peida postitus",
|
||||||
|
"content_warning.show": "Näita ikkagi",
|
||||||
"conversation.delete": "Kustuta vestlus",
|
"conversation.delete": "Kustuta vestlus",
|
||||||
"conversation.mark_as_read": "Märgi loetuks",
|
"conversation.mark_as_read": "Märgi loetuks",
|
||||||
"conversation.open": "Vaata vestlust",
|
"conversation.open": "Vaata vestlust",
|
||||||
|
@ -291,6 +303,8 @@
|
||||||
"filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus",
|
"filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus",
|
||||||
"filter_modal.select_filter.title": "Filtreeri seda postitust",
|
"filter_modal.select_filter.title": "Filtreeri seda postitust",
|
||||||
"filter_modal.title.status": "Postituse filtreerimine",
|
"filter_modal.title.status": "Postituse filtreerimine",
|
||||||
|
"filter_warning.matches_filter": "Sobib filtriga “{title}”",
|
||||||
|
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Mitte üheltki inimeselt} one {Ühelt inimeselt} other {# inimeselt}}, keda võid teada",
|
||||||
"filtered_notifications_banner.title": "Filtreeritud teavitused",
|
"filtered_notifications_banner.title": "Filtreeritud teavitused",
|
||||||
"firehose.all": "Kõik",
|
"firehose.all": "Kõik",
|
||||||
"firehose.local": "See server",
|
"firehose.local": "See server",
|
||||||
|
@ -436,6 +450,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
|
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
|
||||||
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
|
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
|
||||||
"navigation_bar.about": "Teave",
|
"navigation_bar.about": "Teave",
|
||||||
|
"navigation_bar.administration": "Administreerimine",
|
||||||
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
|
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
|
||||||
"navigation_bar.blocks": "Blokeeritud kasutajad",
|
"navigation_bar.blocks": "Blokeeritud kasutajad",
|
||||||
"navigation_bar.bookmarks": "Järjehoidjad",
|
"navigation_bar.bookmarks": "Järjehoidjad",
|
||||||
|
@ -452,6 +467,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad",
|
"navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad",
|
||||||
"navigation_bar.lists": "Nimekirjad",
|
"navigation_bar.lists": "Nimekirjad",
|
||||||
"navigation_bar.logout": "Logi välja",
|
"navigation_bar.logout": "Logi välja",
|
||||||
|
"navigation_bar.moderation": "Modereerimine",
|
||||||
"navigation_bar.mutes": "Vaigistatud kasutajad",
|
"navigation_bar.mutes": "Vaigistatud kasutajad",
|
||||||
"navigation_bar.opened_in_classic_interface": "Postitused, kontod ja teised spetsiaalsed lehed avatakse vaikimisi klassikalises veebiliideses.",
|
"navigation_bar.opened_in_classic_interface": "Postitused, kontod ja teised spetsiaalsed lehed avatakse vaikimisi klassikalises veebiliideses.",
|
||||||
"navigation_bar.personal": "Isiklik",
|
"navigation_bar.personal": "Isiklik",
|
||||||
|
@ -462,10 +478,19 @@
|
||||||
"navigation_bar.security": "Turvalisus",
|
"navigation_bar.security": "Turvalisus",
|
||||||
"not_signed_in_indicator.not_signed_in": "Pead sisse logima, et saada ligipääsu sellele ressursile.",
|
"not_signed_in_indicator.not_signed_in": "Pead sisse logima, et saada ligipääsu sellele ressursile.",
|
||||||
"notification.admin.report": "{name} saatis teavituse {target} kohta",
|
"notification.admin.report": "{name} saatis teavituse {target} kohta",
|
||||||
|
"notification.admin.report_account": "{name} raporteeris {count, plural, one {ühest postitusest} other {# postitusest}} kohast {target} kategooriast {category}",
|
||||||
|
"notification.admin.report_account_other": "{name} raporteeris {count, plural, one {ühest postitusest} other {# postitusest}} kohast {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} raporteeris {target} kategooriast {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} raporteeris kohast {target}",
|
||||||
"notification.admin.sign_up": "{name} registreerus",
|
"notification.admin.sign_up": "{name} registreerus",
|
||||||
"notification.favourite": "{name} märkis su postituse lemmikuks",
|
"notification.favourite": "{name} märkis su postituse lemmikuks",
|
||||||
"notification.follow": "{name} alustas su jälgimist",
|
"notification.follow": "{name} alustas su jälgimist",
|
||||||
"notification.follow_request": "{name} soovib sind jälgida",
|
"notification.follow_request": "{name} soovib sind jälgida",
|
||||||
|
"notification.label.mention": "Mainimine",
|
||||||
|
"notification.label.private_mention": "Privaatne mainimine",
|
||||||
|
"notification.label.private_reply": "Privaatne vastus",
|
||||||
|
"notification.label.reply": "Vastus",
|
||||||
|
"notification.mention": "Mainimine",
|
||||||
"notification.moderation-warning.learn_more": "Vaata lisa",
|
"notification.moderation-warning.learn_more": "Vaata lisa",
|
||||||
"notification.moderation_warning": "Said modereerimise hoiatuse",
|
"notification.moderation_warning": "Said modereerimise hoiatuse",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Mõni su postitus on eemaldatud.",
|
"notification.moderation_warning.action_delete_statuses": "Mõni su postitus on eemaldatud.",
|
||||||
|
@ -476,6 +501,7 @@
|
||||||
"notification.moderation_warning.action_silence": "Su kontole pandi piirang.",
|
"notification.moderation_warning.action_silence": "Su kontole pandi piirang.",
|
||||||
"notification.moderation_warning.action_suspend": "Su konto on peatatud.",
|
"notification.moderation_warning.action_suspend": "Su konto on peatatud.",
|
||||||
"notification.own_poll": "Su küsitlus on lõppenud",
|
"notification.own_poll": "Su küsitlus on lõppenud",
|
||||||
|
"notification.poll": "Hääletus, millel osalesid, on lõppenud",
|
||||||
"notification.reblog": "{name} jagas edasi postitust",
|
"notification.reblog": "{name} jagas edasi postitust",
|
||||||
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
|
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
|
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
|
||||||
|
@ -486,13 +512,20 @@
|
||||||
"notification.update": "{name} muutis postitust",
|
"notification.update": "{name} muutis postitust",
|
||||||
"notification_requests.accept": "Nõus",
|
"notification_requests.accept": "Nõus",
|
||||||
"notification_requests.dismiss": "Hülga",
|
"notification_requests.dismiss": "Hülga",
|
||||||
|
"notification_requests.explainer_for_limited_account": "Sellelt kontolt tulevad teavitused on filtreeritud, sest moderaator on seda kontot piiranud.",
|
||||||
|
"notification_requests.explainer_for_limited_remote_account": "Sellelt kontolt tulevad teavitused on filtreeritud, sest moderaator on seda kontot või serverit piiranud.",
|
||||||
|
"notification_requests.maximize": "Maksimeeri",
|
||||||
|
"notification_requests.minimize_banner": "Minimeeri filtreeritud teavituste bänner",
|
||||||
"notification_requests.notifications_from": "Teavitus kasutajalt {name}",
|
"notification_requests.notifications_from": "Teavitus kasutajalt {name}",
|
||||||
"notification_requests.title": "Filtreeritud teavitused",
|
"notification_requests.title": "Filtreeritud teavitused",
|
||||||
"notifications.clear": "Puhasta teated",
|
"notifications.clear": "Puhasta teated",
|
||||||
"notifications.clear_confirmation": "Oled kindel, et soovid püsivalt kõik oma teated eemaldada?",
|
"notifications.clear_confirmation": "Oled kindel, et soovid püsivalt kõik oma teated eemaldada?",
|
||||||
|
"notifications.clear_title": "Tühjenda teavitus?",
|
||||||
"notifications.column_settings.admin.report": "Uued teavitused:",
|
"notifications.column_settings.admin.report": "Uued teavitused:",
|
||||||
"notifications.column_settings.admin.sign_up": "Uued kasutajad:",
|
"notifications.column_settings.admin.sign_up": "Uued kasutajad:",
|
||||||
"notifications.column_settings.alert": "Töölauateated",
|
"notifications.column_settings.alert": "Töölauateated",
|
||||||
|
"notifications.column_settings.beta.category": "Eksperimentaalsed oskused",
|
||||||
|
"notifications.column_settings.beta.grouping": "Teavituste rühmitamine",
|
||||||
"notifications.column_settings.favourite": "Lemmikud:",
|
"notifications.column_settings.favourite": "Lemmikud:",
|
||||||
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
|
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
|
||||||
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
|
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
|
||||||
|
@ -521,6 +554,8 @@
|
||||||
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
|
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
|
||||||
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
|
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
|
||||||
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
|
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Piiratud serveri moderaatorite poolt",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Modereeritud kontod",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
|
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
|
||||||
"notifications.policy.filter_new_accounts_title": "Uued kontod",
|
"notifications.policy.filter_new_accounts_title": "Uued kontod",
|
||||||
"notifications.policy.filter_not_followers_hint": "Kaasates kasutajad, kes on sind jälginud vähem kui {days, plural, one {ühe päeva} other {# päeva}}",
|
"notifications.policy.filter_not_followers_hint": "Kaasates kasutajad, kes on sind jälginud vähem kui {days, plural, one {ühe päeva} other {# päeva}}",
|
||||||
|
@ -655,9 +690,13 @@
|
||||||
"report.unfollow_explanation": "Jälgid seda kontot. Et mitte näha tema postitusi oma koduvoos, lõpeta ta jälgimine.",
|
"report.unfollow_explanation": "Jälgid seda kontot. Et mitte näha tema postitusi oma koduvoos, lõpeta ta jälgimine.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} postitus} other {{count} postitust}} listatud",
|
"report_notification.attached_statuses": "{count, plural, one {{count} postitus} other {{count} postitust}} listatud",
|
||||||
"report_notification.categories.legal": "Õiguslik",
|
"report_notification.categories.legal": "Õiguslik",
|
||||||
|
"report_notification.categories.legal_sentence": "ebaseaduslik sisu",
|
||||||
"report_notification.categories.other": "Muu",
|
"report_notification.categories.other": "Muu",
|
||||||
|
"report_notification.categories.other_sentence": "muu",
|
||||||
"report_notification.categories.spam": "Rämpspost",
|
"report_notification.categories.spam": "Rämpspost",
|
||||||
|
"report_notification.categories.spam_sentence": "rämps",
|
||||||
"report_notification.categories.violation": "Reeglite rikkumine",
|
"report_notification.categories.violation": "Reeglite rikkumine",
|
||||||
|
"report_notification.categories.violation_sentence": "reeglite rikkumine",
|
||||||
"report_notification.open": "Ava teavitus",
|
"report_notification.open": "Ava teavitus",
|
||||||
"search.no_recent_searches": "Pole viimatisi otsinguid",
|
"search.no_recent_searches": "Pole viimatisi otsinguid",
|
||||||
"search.placeholder": "Otsi",
|
"search.placeholder": "Otsi",
|
||||||
|
|
|
@ -538,7 +538,7 @@
|
||||||
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
||||||
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d'{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
||||||
"notification_requests.dismiss": "Rejeter",
|
"notification_requests.dismiss": "Rejeter",
|
||||||
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
||||||
|
|
|
@ -538,7 +538,7 @@
|
||||||
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
||||||
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d'{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
||||||
"notification_requests.dismiss": "Rejeter",
|
"notification_requests.dismiss": "Rejeter",
|
||||||
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
||||||
|
@ -727,7 +727,7 @@
|
||||||
"report.thanks.title": "Vous ne voulez pas voir cela ?",
|
"report.thanks.title": "Vous ne voulez pas voir cela ?",
|
||||||
"report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.",
|
"report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.",
|
||||||
"report.unfollow": "Ne plus suivre @{name}",
|
"report.unfollow": "Ne plus suivre @{name}",
|
||||||
"report.unfollow_explanation": "Vous êtes abonné à ce compte. Pour ne plus voir ses publications dans votre flux principal, retirez-le de votre liste d'abonnements.",
|
"report.unfollow_explanation": "Vous êtes abonné à ce compte. Pour ne plus voir ses publications dans votre fil principal, retirez-le de votre liste d'abonnements.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}",
|
"report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}",
|
||||||
"report_notification.categories.legal": "Légal",
|
"report_notification.categories.legal": "Légal",
|
||||||
"report_notification.categories.legal_sentence": "contenu illégal",
|
"report_notification.categories.legal_sentence": "contenu illégal",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "A bheil thu airson an cleachdaiche a bhacadh?",
|
"block_modal.title": "A bheil thu airson an cleachdaiche a bhacadh?",
|
||||||
"block_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
"block_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
||||||
"boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras",
|
"boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras",
|
||||||
|
"boost_modal.reblog": "A bheil thu airson am post a bhrosnachadh?",
|
||||||
|
"boost_modal.undo_reblog": "A bheil thu airson sgur de bhrosnachadh a’ phuist?",
|
||||||
"bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd",
|
"bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd",
|
||||||
"bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.",
|
"bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.",
|
||||||
"bundle_column_error.error.title": "Ìoc!",
|
"bundle_column_error.error.title": "Ìoc!",
|
||||||
|
@ -467,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
"mute_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
||||||
"mute_modal.you_wont_see_posts": "Chì iad na postaichean agad fhathast ach chan fhaic thu na postaichean aca-san.",
|
"mute_modal.you_wont_see_posts": "Chì iad na postaichean agad fhathast ach chan fhaic thu na postaichean aca-san.",
|
||||||
"navigation_bar.about": "Mu dhèidhinn",
|
"navigation_bar.about": "Mu dhèidhinn",
|
||||||
|
"navigation_bar.administration": "Rianachd",
|
||||||
"navigation_bar.advanced_interface": "Fosgail san eadar-aghaidh-lìn adhartach",
|
"navigation_bar.advanced_interface": "Fosgail san eadar-aghaidh-lìn adhartach",
|
||||||
"navigation_bar.blocks": "Cleachdaichean bacte",
|
"navigation_bar.blocks": "Cleachdaichean bacte",
|
||||||
"navigation_bar.bookmarks": "Comharran-lìn",
|
"navigation_bar.bookmarks": "Comharran-lìn",
|
||||||
|
@ -483,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Dàimhean leantainn",
|
"navigation_bar.follows_and_followers": "Dàimhean leantainn",
|
||||||
"navigation_bar.lists": "Liostaichean",
|
"navigation_bar.lists": "Liostaichean",
|
||||||
"navigation_bar.logout": "Clàraich a-mach",
|
"navigation_bar.logout": "Clàraich a-mach",
|
||||||
|
"navigation_bar.moderation": "Maorsainneachd",
|
||||||
"navigation_bar.mutes": "Cleachdaichean mùchte",
|
"navigation_bar.mutes": "Cleachdaichean mùchte",
|
||||||
"navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan ’s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.",
|
"navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan ’s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.",
|
||||||
"navigation_bar.personal": "Pearsanta",
|
"navigation_bar.personal": "Pearsanta",
|
||||||
|
|
|
@ -191,6 +191,8 @@
|
||||||
"confirmations.unfollow.confirm": "Non plus sequer",
|
"confirmations.unfollow.confirm": "Non plus sequer",
|
||||||
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
|
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
|
||||||
"confirmations.unfollow.title": "Cessar de sequer le usator?",
|
"confirmations.unfollow.title": "Cessar de sequer le usator?",
|
||||||
|
"content_warning.hide": "Celar le message",
|
||||||
|
"content_warning.show": "Monstrar in omne caso",
|
||||||
"conversation.delete": "Deler conversation",
|
"conversation.delete": "Deler conversation",
|
||||||
"conversation.mark_as_read": "Marcar como legite",
|
"conversation.mark_as_read": "Marcar como legite",
|
||||||
"conversation.open": "Vider conversation",
|
"conversation.open": "Vider conversation",
|
||||||
|
@ -298,6 +300,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove",
|
"filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove",
|
||||||
"filter_modal.select_filter.title": "Filtrar iste message",
|
"filter_modal.select_filter.title": "Filtrar iste message",
|
||||||
"filter_modal.title.status": "Filtrar un message",
|
"filter_modal.title.status": "Filtrar un message",
|
||||||
|
"filter_warning.matches_filter": "Corresponde al filtro “{title}”",
|
||||||
"filtered_notifications_banner.title": "Notificationes filtrate",
|
"filtered_notifications_banner.title": "Notificationes filtrate",
|
||||||
"firehose.all": "Toto",
|
"firehose.all": "Toto",
|
||||||
"firehose.local": "Iste servitor",
|
"firehose.local": "Iste servitor",
|
||||||
|
@ -346,6 +349,10 @@
|
||||||
"hashtag.follow": "Sequer hashtag",
|
"hashtag.follow": "Sequer hashtag",
|
||||||
"hashtag.unfollow": "Non sequer plus le hashtag",
|
"hashtag.unfollow": "Non sequer plus le hashtag",
|
||||||
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
|
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
|
||||||
|
"hints.profiles.see_more_followers": "Vider plus de sequitores sur {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Vider plus de sequites sur {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Vider plus de messages sur {domain}",
|
||||||
|
"hints.threads.see_more": "Vider plus de responsas sur {domain}",
|
||||||
"home.column_settings.show_reblogs": "Monstrar impulsos",
|
"home.column_settings.show_reblogs": "Monstrar impulsos",
|
||||||
"home.column_settings.show_replies": "Monstrar responsas",
|
"home.column_settings.show_replies": "Monstrar responsas",
|
||||||
"home.hide_announcements": "Celar annuncios",
|
"home.hide_announcements": "Celar annuncios",
|
||||||
|
@ -443,6 +450,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
"mute_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
||||||
"mute_modal.you_wont_see_posts": "Iste persona pote totevia vider tu messages, ma tu non videra le sues.",
|
"mute_modal.you_wont_see_posts": "Iste persona pote totevia vider tu messages, ma tu non videra le sues.",
|
||||||
"navigation_bar.about": "A proposito",
|
"navigation_bar.about": "A proposito",
|
||||||
|
"navigation_bar.administration": "Administration",
|
||||||
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
|
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
|
||||||
"navigation_bar.blocks": "Usatores blocate",
|
"navigation_bar.blocks": "Usatores blocate",
|
||||||
"navigation_bar.bookmarks": "Marcapaginas",
|
"navigation_bar.bookmarks": "Marcapaginas",
|
||||||
|
@ -459,6 +467,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Sequites e sequitores",
|
"navigation_bar.follows_and_followers": "Sequites e sequitores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Clauder session",
|
"navigation_bar.logout": "Clauder session",
|
||||||
|
"navigation_bar.moderation": "Moderation",
|
||||||
"navigation_bar.mutes": "Usatores silentiate",
|
"navigation_bar.mutes": "Usatores silentiate",
|
||||||
"navigation_bar.opened_in_classic_interface": "Messages, contos e altere paginas specific es aperite per predefinition in le interfacie web classic.",
|
"navigation_bar.opened_in_classic_interface": "Messages, contos e altere paginas specific es aperite per predefinition in le interfacie web classic.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
@ -469,6 +478,8 @@
|
||||||
"navigation_bar.security": "Securitate",
|
"navigation_bar.security": "Securitate",
|
||||||
"not_signed_in_indicator.not_signed_in": "Es necessari aperir session pro acceder a iste ressource.",
|
"not_signed_in_indicator.not_signed_in": "Es necessari aperir session pro acceder a iste ressource.",
|
||||||
"notification.admin.report": "{name} ha reportate {target}",
|
"notification.admin.report": "{name} ha reportate {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} ha reportate {target} pro {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} ha reportate {target}",
|
||||||
"notification.admin.sign_up": "{name} se ha inscribite",
|
"notification.admin.sign_up": "{name} se ha inscribite",
|
||||||
"notification.favourite": "{name} ha marcate tu message como favorite",
|
"notification.favourite": "{name} ha marcate tu message como favorite",
|
||||||
"notification.follow": "{name} te ha sequite",
|
"notification.follow": "{name} te ha sequite",
|
||||||
|
@ -488,6 +499,7 @@
|
||||||
"notification.moderation_warning.action_silence": "Tu conto ha essite limitate.",
|
"notification.moderation_warning.action_silence": "Tu conto ha essite limitate.",
|
||||||
"notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.",
|
"notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.",
|
||||||
"notification.own_poll": "Tu sondage ha finite",
|
"notification.own_poll": "Tu sondage ha finite",
|
||||||
|
"notification.poll": "Un sondage in le qual tu ha votate ha finite",
|
||||||
"notification.reblog": "{name} ha impulsate tu message",
|
"notification.reblog": "{name} ha impulsate tu message",
|
||||||
"notification.relationships_severance_event": "Connexiones perdite con {name}",
|
"notification.relationships_severance_event": "Connexiones perdite con {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.",
|
"notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.",
|
||||||
|
@ -497,9 +509,14 @@
|
||||||
"notification.status": "{name} ha justo ora publicate",
|
"notification.status": "{name} ha justo ora publicate",
|
||||||
"notification.update": "{name} ha modificate un message",
|
"notification.update": "{name} ha modificate un message",
|
||||||
"notification_requests.accept": "Acceptar",
|
"notification_requests.accept": "Acceptar",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Acceptar petitiones de notification?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Dimitter petitiones de notification?",
|
||||||
"notification_requests.dismiss": "Clauder",
|
"notification_requests.dismiss": "Clauder",
|
||||||
|
"notification_requests.edit_selection": "Modificar",
|
||||||
|
"notification_requests.exit_selection": "Facite",
|
||||||
"notification_requests.notifications_from": "Notificationes de {name}",
|
"notification_requests.notifications_from": "Notificationes de {name}",
|
||||||
"notification_requests.title": "Notificationes filtrate",
|
"notification_requests.title": "Notificationes filtrate",
|
||||||
|
"notification_requests.view": "Vider notificationes",
|
||||||
"notifications.clear": "Rader notificationes",
|
"notifications.clear": "Rader notificationes",
|
||||||
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
|
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
|
||||||
"notifications.clear_title": "Rader le notificationes?",
|
"notifications.clear_title": "Rader le notificationes?",
|
||||||
|
@ -536,6 +553,11 @@
|
||||||
"notifications.permission_denied": "Le notificationes de scriptorio es indisponibile a causa de un requesta anteriormente refusate de permissiones del navigator",
|
"notifications.permission_denied": "Le notificationes de scriptorio es indisponibile a causa de un requesta anteriormente refusate de permissiones del navigator",
|
||||||
"notifications.permission_denied_alert": "Le notificationes de scriptorio non pote esser activate perque le permission del navigator ha essite refusate anteriormente",
|
"notifications.permission_denied_alert": "Le notificationes de scriptorio non pote esser activate perque le permission del navigator ha essite refusate anteriormente",
|
||||||
"notifications.permission_required": "Le notificationes de scriptorio es indisponibile perque le permission necessari non ha essite concedite.",
|
"notifications.permission_required": "Le notificationes de scriptorio es indisponibile perque le permission necessari non ha essite concedite.",
|
||||||
|
"notifications.policy.accept": "Acceptar",
|
||||||
|
"notifications.policy.accept_hint": "Monstrar in le notificationes",
|
||||||
|
"notifications.policy.filter": "Filtrar",
|
||||||
|
"notifications.policy.filter_hint": "Inviar al cassa de notificationes filtrate",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Contos moderate",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Create in le ultime {days, plural, one {die} other {# dies}}",
|
"notifications.policy.filter_new_accounts.hint": "Create in le ultime {days, plural, one {die} other {# dies}}",
|
||||||
"notifications.policy.filter_new_accounts_title": "Nove contos",
|
"notifications.policy.filter_new_accounts_title": "Nove contos",
|
||||||
"notifications.policy.filter_not_followers_hint": "Includente le personas que te ha sequite durante minus de {days, plural, one {un die} other {# dies}}",
|
"notifications.policy.filter_not_followers_hint": "Includente le personas que te ha sequite durante minus de {days, plural, one {un die} other {# dies}}",
|
||||||
|
@ -544,6 +566,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Personas que tu non seque",
|
"notifications.policy.filter_not_following_title": "Personas que tu non seque",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtrate, excepte si es in responsa a tu proprie mention o si tu seque le expeditor",
|
"notifications.policy.filter_private_mentions_hint": "Filtrate, excepte si es in responsa a tu proprie mention o si tu seque le expeditor",
|
||||||
"notifications.policy.filter_private_mentions_title": "Mentiones private indesirate",
|
"notifications.policy.filter_private_mentions_title": "Mentiones private indesirate",
|
||||||
|
"notifications.policy.title": "Gerer notificationes de…",
|
||||||
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
||||||
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
||||||
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
||||||
|
@ -596,8 +619,8 @@
|
||||||
"poll.vote": "Votar",
|
"poll.vote": "Votar",
|
||||||
"poll.voted": "Tu ha votate pro iste responsa",
|
"poll.voted": "Tu ha votate pro iste responsa",
|
||||||
"poll.votes": "{votes, plural, one {# voto} other {# votos}}",
|
"poll.votes": "{votes, plural, one {# voto} other {# votos}}",
|
||||||
"poll_button.add_poll": "Adder un inquesta",
|
"poll_button.add_poll": "Adder un sondage",
|
||||||
"poll_button.remove_poll": "Remover un inquesta",
|
"poll_button.remove_poll": "Remover un sondage",
|
||||||
"privacy.change": "Cambiar le confidentialitate del message",
|
"privacy.change": "Cambiar le confidentialitate del message",
|
||||||
"privacy.direct.long": "Tote le personas mentionate in le message",
|
"privacy.direct.long": "Tote le personas mentionate in le message",
|
||||||
"privacy.direct.short": "Personas specific",
|
"privacy.direct.short": "Personas specific",
|
||||||
|
|
|
@ -194,7 +194,7 @@
|
||||||
"confirmations.unfollow.confirm": "フォロー解除",
|
"confirmations.unfollow.confirm": "フォロー解除",
|
||||||
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
||||||
"confirmations.unfollow.title": "フォローを解除しようとしています",
|
"confirmations.unfollow.title": "フォローを解除しようとしています",
|
||||||
"content_warning.hide": "投稿を隠す",
|
"content_warning.hide": "内容を隠す",
|
||||||
"content_warning.show": "承知の上で表示",
|
"content_warning.show": "承知の上で表示",
|
||||||
"conversation.delete": "会話を削除",
|
"conversation.delete": "会話を削除",
|
||||||
"conversation.mark_as_read": "既読にする",
|
"conversation.mark_as_read": "既読にする",
|
||||||
|
@ -469,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "宛先に相手が入っている投稿も閲覧できなくなります。",
|
"mute_modal.you_wont_see_mentions": "宛先に相手が入っている投稿も閲覧できなくなります。",
|
||||||
"mute_modal.you_wont_see_posts": "相手はあなたの投稿を今までどおり閲覧できますが、あなたは相手の投稿を閲覧できなくなります。",
|
"mute_modal.you_wont_see_posts": "相手はあなたの投稿を今までどおり閲覧できますが、あなたは相手の投稿を閲覧できなくなります。",
|
||||||
"navigation_bar.about": "概要",
|
"navigation_bar.about": "概要",
|
||||||
|
"navigation_bar.administration": "管理",
|
||||||
"navigation_bar.advanced_interface": "上級者向けUIに戻る",
|
"navigation_bar.advanced_interface": "上級者向けUIに戻る",
|
||||||
"navigation_bar.blocks": "ブロックしたユーザー",
|
"navigation_bar.blocks": "ブロックしたユーザー",
|
||||||
"navigation_bar.bookmarks": "ブックマーク",
|
"navigation_bar.bookmarks": "ブックマーク",
|
||||||
|
@ -485,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "フォロー・フォロワー",
|
"navigation_bar.follows_and_followers": "フォロー・フォロワー",
|
||||||
"navigation_bar.lists": "リスト",
|
"navigation_bar.lists": "リスト",
|
||||||
"navigation_bar.logout": "ログアウト",
|
"navigation_bar.logout": "ログアウト",
|
||||||
|
"navigation_bar.moderation": "モデレーション",
|
||||||
"navigation_bar.mutes": "ミュートしたユーザー",
|
"navigation_bar.mutes": "ミュートしたユーザー",
|
||||||
"navigation_bar.opened_in_classic_interface": "投稿やプロフィールを直接開いた場合は一時的に標準UIで表示されます。",
|
"navigation_bar.opened_in_classic_interface": "投稿やプロフィールを直接開いた場合は一時的に標準UIで表示されます。",
|
||||||
"navigation_bar.personal": "個人用",
|
"navigation_bar.personal": "個人用",
|
||||||
|
@ -546,10 +548,11 @@
|
||||||
"notification_requests.exit_selection": "選択の終了",
|
"notification_requests.exit_selection": "選択の終了",
|
||||||
"notification_requests.explainer_for_limited_account": "このアカウントはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
|
"notification_requests.explainer_for_limited_account": "このアカウントはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
|
||||||
"notification_requests.explainer_for_limited_remote_account": "このアカウントが所属するサーバーはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
|
"notification_requests.explainer_for_limited_remote_account": "このアカウントが所属するサーバーはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
|
||||||
|
"notification_requests.maximize": "最大化",
|
||||||
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
|
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
|
||||||
"notification_requests.notifications_from": "{name}からの通知",
|
"notification_requests.notifications_from": "{name}からの通知",
|
||||||
"notification_requests.title": "保留中の通知",
|
"notification_requests.title": "保留中の通知",
|
||||||
"notification_requests.view": "通知を確認",
|
"notification_requests.view": "通知を見る",
|
||||||
"notifications.clear": "通知を消去",
|
"notifications.clear": "通知を消去",
|
||||||
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
||||||
"notifications.clear_title": "通知を消去しようとしています",
|
"notifications.clear_title": "通知を消去しようとしています",
|
||||||
|
|
|
@ -158,6 +158,8 @@
|
||||||
"confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
|
"confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
|
||||||
"confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
|
"confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
|
||||||
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
|
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
|
||||||
|
"content_warning.hide": "Ffer tasuffeɣt",
|
||||||
|
"content_warning.show": "Ssken-d akken tebɣu tili",
|
||||||
"conversation.delete": "Kkes adiwenni",
|
"conversation.delete": "Kkes adiwenni",
|
||||||
"conversation.mark_as_read": "Creḍ yettwaɣṛa",
|
"conversation.mark_as_read": "Creḍ yettwaɣṛa",
|
||||||
"conversation.open": "Ssken adiwenni",
|
"conversation.open": "Ssken adiwenni",
|
||||||
|
@ -360,6 +362,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Ur tezmireḍ ara ad twaliḍ tisuffaɣ anda d-yettwabdar.",
|
"mute_modal.you_wont_see_mentions": "Ur tezmireḍ ara ad twaliḍ tisuffaɣ anda d-yettwabdar.",
|
||||||
"mute_modal.you_wont_see_posts": "Yezmer ad yettwali tisuffaɣ-ik·im, maca ur tettwaliḍ ara tidak-is.",
|
"mute_modal.you_wont_see_posts": "Yezmer ad yettwali tisuffaɣ-ik·im, maca ur tettwaliḍ ara tidak-is.",
|
||||||
"navigation_bar.about": "Ɣef",
|
"navigation_bar.about": "Ɣef",
|
||||||
|
"navigation_bar.administration": "Tadbelt",
|
||||||
"navigation_bar.advanced_interface": "Ldi deg ugrudem n web leqqayen",
|
"navigation_bar.advanced_interface": "Ldi deg ugrudem n web leqqayen",
|
||||||
"navigation_bar.blocks": "Iseqdacen yettusḥebsen",
|
"navigation_bar.blocks": "Iseqdacen yettusḥebsen",
|
||||||
"navigation_bar.bookmarks": "Ticraḍ",
|
"navigation_bar.bookmarks": "Ticraḍ",
|
||||||
|
@ -390,6 +393,7 @@
|
||||||
"notification.favourite": "{name} yesmenyaf addad-ik·im",
|
"notification.favourite": "{name} yesmenyaf addad-ik·im",
|
||||||
"notification.follow": "iṭṭafar-ik·em-id {name}",
|
"notification.follow": "iṭṭafar-ik·em-id {name}",
|
||||||
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
|
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
|
||||||
|
"notification.label.mention": "Abdar",
|
||||||
"notification.label.private_mention": "Abdar uslig",
|
"notification.label.private_mention": "Abdar uslig",
|
||||||
"notification.label.private_reply": "Tiririt tusligt",
|
"notification.label.private_reply": "Tiririt tusligt",
|
||||||
"notification.label.reply": "Tiririt",
|
"notification.label.reply": "Tiririt",
|
||||||
|
@ -402,6 +406,7 @@
|
||||||
"notification.status": "{name} akken i d-yessufeɣ",
|
"notification.status": "{name} akken i d-yessufeɣ",
|
||||||
"notification_requests.accept": "Qbel",
|
"notification_requests.accept": "Qbel",
|
||||||
"notification_requests.dismiss": "Agi",
|
"notification_requests.dismiss": "Agi",
|
||||||
|
"notification_requests.exit_selection": "Immed",
|
||||||
"notification_requests.notifications_from": "Alɣuten sɣur {name}",
|
"notification_requests.notifications_from": "Alɣuten sɣur {name}",
|
||||||
"notifications.clear": "Sfeḍ alɣuten",
|
"notifications.clear": "Sfeḍ alɣuten",
|
||||||
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?",
|
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?",
|
||||||
|
|
|
@ -605,7 +605,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "내가 팔로우하지 않는 사람들",
|
"notifications.policy.filter_not_following_title": "내가 팔로우하지 않는 사람들",
|
||||||
"notifications.policy.filter_private_mentions_hint": "내가 한 멘션에 단 답글이거나 내가 발신자를 팔로우 한 것이 아닌 이상 걸러집니다",
|
"notifications.policy.filter_private_mentions_hint": "내가 한 멘션에 단 답글이거나 내가 발신자를 팔로우 한 것이 아닌 이상 걸러집니다",
|
||||||
"notifications.policy.filter_private_mentions_title": "청하지 않은 개인적인 멘션",
|
"notifications.policy.filter_private_mentions_title": "청하지 않은 개인적인 멘션",
|
||||||
"notifications.policy.title": "…의 알림 설정",
|
"notifications.policy.title": "알림 조건 설정",
|
||||||
"notifications_permission_banner.enable": "데스크탑 알림 활성화",
|
"notifications_permission_banner.enable": "데스크탑 알림 활성화",
|
||||||
"notifications_permission_banner.how_to_control": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.",
|
"notifications_permission_banner.how_to_control": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.",
|
||||||
"notifications_permission_banner.title": "아무것도 놓치지 마세요",
|
"notifications_permission_banner.title": "아무것도 놓치지 마세요",
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
"block_modal.title": "Bloka utilizador?",
|
"block_modal.title": "Bloka utilizador?",
|
||||||
"block_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
"block_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
||||||
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
|
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
|
||||||
|
"boost_modal.reblog": "Repartajar puvlikasyon?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
|
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
|
||||||
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
|
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
|
||||||
"bundle_column_error.error.title": "Atyo, no!",
|
"bundle_column_error.error.title": "Atyo, no!",
|
||||||
|
@ -185,6 +186,8 @@
|
||||||
"confirmations.unfollow.confirm": "Desige",
|
"confirmations.unfollow.confirm": "Desige",
|
||||||
"confirmations.unfollow.message": "Estas siguro ke keres deshar de segir a {name}?",
|
"confirmations.unfollow.message": "Estas siguro ke keres deshar de segir a {name}?",
|
||||||
"confirmations.unfollow.title": "Desige utilizador?",
|
"confirmations.unfollow.title": "Desige utilizador?",
|
||||||
|
"content_warning.hide": "Eskonde puvlikasyon",
|
||||||
|
"content_warning.show": "Amostra entanto",
|
||||||
"conversation.delete": "Efasa konversasyon",
|
"conversation.delete": "Efasa konversasyon",
|
||||||
"conversation.mark_as_read": "Marka komo meldado",
|
"conversation.mark_as_read": "Marka komo meldado",
|
||||||
"conversation.open": "Ve konversasyon",
|
"conversation.open": "Ve konversasyon",
|
||||||
|
@ -425,6 +428,7 @@
|
||||||
"mute_modal.title": "Silensiar utilizador?",
|
"mute_modal.title": "Silensiar utilizador?",
|
||||||
"mute_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
"mute_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
||||||
"navigation_bar.about": "Sovre mozotros",
|
"navigation_bar.about": "Sovre mozotros",
|
||||||
|
"navigation_bar.administration": "Administrasyon",
|
||||||
"navigation_bar.advanced_interface": "Avre en la enterfaz avanzada",
|
"navigation_bar.advanced_interface": "Avre en la enterfaz avanzada",
|
||||||
"navigation_bar.blocks": "Utilizadores blokados",
|
"navigation_bar.blocks": "Utilizadores blokados",
|
||||||
"navigation_bar.bookmarks": "Markadores",
|
"navigation_bar.bookmarks": "Markadores",
|
||||||
|
@ -441,6 +445,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Segidos i suivantes",
|
"navigation_bar.follows_and_followers": "Segidos i suivantes",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Salir",
|
"navigation_bar.logout": "Salir",
|
||||||
|
"navigation_bar.moderation": "Moderasyon",
|
||||||
"navigation_bar.mutes": "Utilizadores silensiados",
|
"navigation_bar.mutes": "Utilizadores silensiados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.",
|
"navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
@ -475,6 +480,8 @@
|
||||||
"notification.update": "{name} edito una publikasyon",
|
"notification.update": "{name} edito una publikasyon",
|
||||||
"notification_requests.accept": "Acheta",
|
"notification_requests.accept": "Acheta",
|
||||||
"notification_requests.dismiss": "Kita",
|
"notification_requests.dismiss": "Kita",
|
||||||
|
"notification_requests.edit_selection": "Edita",
|
||||||
|
"notification_requests.exit_selection": "Fecho",
|
||||||
"notification_requests.notifications_from": "Avizos de {name}",
|
"notification_requests.notifications_from": "Avizos de {name}",
|
||||||
"notification_requests.title": "Avizos filtrados",
|
"notification_requests.title": "Avizos filtrados",
|
||||||
"notification_requests.view": "Amostra avizos",
|
"notification_requests.view": "Amostra avizos",
|
||||||
|
|
|
@ -635,7 +635,7 @@
|
||||||
"onboarding.steps.share_profile.title": "Bendrink savo Mastodon profilį",
|
"onboarding.steps.share_profile.title": "Bendrink savo Mastodon profilį",
|
||||||
"onboarding.tips.2fa": "<strong>Ar žinojai?</strong> Savo paskyrą gali apsaugoti nustatant dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
|
"onboarding.tips.2fa": "<strong>Ar žinojai?</strong> Savo paskyrą gali apsaugoti nustatant dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ar žinojai?</strong> Kadangi Mastodon decentralizuotas, kai kurie profiliai, su kuriais susidursi, bus talpinami ne tavo, o kituose serveriuose. Ir vis tiek galėsi su jais sklandžiai bendrauti! Jų serveris yra antroje naudotojo vardo pusėje.",
|
"onboarding.tips.accounts_from_other_servers": "<strong>Ar žinojai?</strong> Kadangi Mastodon decentralizuotas, kai kurie profiliai, su kuriais susidursi, bus talpinami ne tavo, o kituose serveriuose. Ir vis tiek galėsi su jais sklandžiai bendrauti! Jų serveris yra antroje naudotojo vardo pusėje.",
|
||||||
"onboarding.tips.migration": "<strong>Ar žinojai?</strong> Jei manai, kad {domain} serveris ateityje tau netiks, gali persikelti į kitą Mastodon serverį neprarandant savo sekėjų. Gali net talpinti savo paties serverį.",
|
"onboarding.tips.migration": "<strong>Ar žinojai?</strong> Jei manai, kad {domain} serveris ateityje tau netiks, gali persikelti į kitą „Mastodon“ serverį neprarandant savo sekėjų. Gali net talpinti savo paties serverį!",
|
||||||
"onboarding.tips.verification": "<strong>Ar žinojai?</strong> Savo paskyrą gali patvirtinti pateikęs (-usi) nuorodą į Mastodon profilį savo interneto svetainėje ir pridėjęs (-usi) svetainę prie savo profilio. Nereikia jokių mokesčių ar dokumentų.",
|
"onboarding.tips.verification": "<strong>Ar žinojai?</strong> Savo paskyrą gali patvirtinti pateikęs (-usi) nuorodą į Mastodon profilį savo interneto svetainėje ir pridėjęs (-usi) svetainę prie savo profilio. Nereikia jokių mokesčių ar dokumentų.",
|
||||||
"password_confirmation.exceeds_maxlength": "Slaptažodžio patvirtinimas viršija maksimalų slaptažodžio ilgį.",
|
"password_confirmation.exceeds_maxlength": "Slaptažodžio patvirtinimas viršija maksimalų slaptažodžio ilgį.",
|
||||||
"password_confirmation.mismatching": "Slaptažodžio patvirtinimas nesutampa.",
|
"password_confirmation.mismatching": "Slaptažodžio patvirtinimas nesutampa.",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne tjeneren.",
|
"about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne tjeneren.",
|
||||||
"about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}",
|
"about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}",
|
||||||
"about.rules": "Regler for serveren",
|
"about.rules": "Regler for serveren",
|
||||||
|
"account.account_note_header": "Personlig notat",
|
||||||
"account.add_or_remove_from_list": "Legg til eller fjern fra lister",
|
"account.add_or_remove_from_list": "Legg til eller fjern fra lister",
|
||||||
"account.badges.bot": "Automatisert",
|
"account.badges.bot": "Automatisert",
|
||||||
"account.badges.group": "Gruppe",
|
"account.badges.group": "Gruppe",
|
||||||
|
@ -33,7 +34,9 @@
|
||||||
"account.follow_back": "Følg tilbake",
|
"account.follow_back": "Følg tilbake",
|
||||||
"account.followers": "Følgere",
|
"account.followers": "Følgere",
|
||||||
"account.followers.empty": "Ingen følger denne brukeren ennå.",
|
"account.followers.empty": "Ingen følger denne brukeren ennå.",
|
||||||
|
"account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}",
|
||||||
"account.following": "Følger",
|
"account.following": "Følger",
|
||||||
|
"account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}",
|
||||||
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
|
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
|
||||||
"account.go_to_profile": "Gå til profil",
|
"account.go_to_profile": "Gå til profil",
|
||||||
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
|
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
|
||||||
|
@ -59,6 +62,7 @@
|
||||||
"account.requested_follow": "{name} har bedt om å få følge deg",
|
"account.requested_follow": "{name} har bedt om å få følge deg",
|
||||||
"account.share": "Del @{name} sin profil",
|
"account.share": "Del @{name} sin profil",
|
||||||
"account.show_reblogs": "Vis fremhevinger fra @{name}",
|
"account.show_reblogs": "Vis fremhevinger fra @{name}",
|
||||||
|
"account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}",
|
||||||
"account.unblock": "Opphev blokkering av @{name}",
|
"account.unblock": "Opphev blokkering av @{name}",
|
||||||
"account.unblock_domain": "Opphev blokkering av {domain}",
|
"account.unblock_domain": "Opphev blokkering av {domain}",
|
||||||
"account.unblock_short": "Opphev blokkering",
|
"account.unblock_short": "Opphev blokkering",
|
||||||
|
@ -84,7 +88,17 @@
|
||||||
"announcement.announcement": "Kunngjøring",
|
"announcement.announcement": "Kunngjøring",
|
||||||
"attachments_list.unprocessed": "(ubehandlet)",
|
"attachments_list.unprocessed": "(ubehandlet)",
|
||||||
"audio.hide": "Skjul lyd",
|
"audio.hide": "Skjul lyd",
|
||||||
|
"block_modal.remote_users_caveat": "Vi vil be serveren {domain} om å respektere din beslutning. Det er imidlertid ingen garanti at det blir overholdt, siden noen servere kan håndtere blokkeringer på forskjellig vis. Offentlige innlegg kan fortsatt være synlige for ikke-innloggede brukere.",
|
||||||
|
"block_modal.show_less": "Vis mindre",
|
||||||
|
"block_modal.show_more": "Vis mer",
|
||||||
|
"block_modal.they_cant_mention": "De kan ikke nevne eller følge deg.",
|
||||||
|
"block_modal.they_cant_see_posts": "De kan ikke se dine innlegg og du kommer ikke til å se deres.",
|
||||||
|
"block_modal.they_will_know": "De kan se at de er blitt blokkert.",
|
||||||
|
"block_modal.title": "Blokker bruker?",
|
||||||
|
"block_modal.you_wont_see_mentions": "Du kommer ikke til å se innlegg som nevner dem.",
|
||||||
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
||||||
|
"boost_modal.reblog": "Fremhev innlegg?",
|
||||||
|
"boost_modal.undo_reblog": "Fjern fremheving?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
|
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
|
||||||
"bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.",
|
"bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.",
|
||||||
"bundle_column_error.error.title": "Å nei!",
|
"bundle_column_error.error.title": "Å nei!",
|
||||||
|
@ -158,21 +172,30 @@
|
||||||
"confirmations.block.confirm": "Blokkèr",
|
"confirmations.block.confirm": "Blokkèr",
|
||||||
"confirmations.delete.confirm": "Slett",
|
"confirmations.delete.confirm": "Slett",
|
||||||
"confirmations.delete.message": "Er du sikker på at du vil slette dette innlegget?",
|
"confirmations.delete.message": "Er du sikker på at du vil slette dette innlegget?",
|
||||||
|
"confirmations.delete.title": "Slett innlegg?",
|
||||||
"confirmations.delete_list.confirm": "Slett",
|
"confirmations.delete_list.confirm": "Slett",
|
||||||
"confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
|
"confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
|
||||||
|
"confirmations.delete_list.title": "Slett liste?",
|
||||||
"confirmations.discard_edit_media.confirm": "Forkast",
|
"confirmations.discard_edit_media.confirm": "Forkast",
|
||||||
"confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?",
|
"confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?",
|
||||||
"confirmations.edit.confirm": "Redigér",
|
"confirmations.edit.confirm": "Redigér",
|
||||||
"confirmations.edit.message": "Å redigere nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
"confirmations.edit.message": "Å redigere nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
||||||
|
"confirmations.edit.title": "Overskriv innlegg?",
|
||||||
"confirmations.logout.confirm": "Logg ut",
|
"confirmations.logout.confirm": "Logg ut",
|
||||||
"confirmations.logout.message": "Er du sikker på at du vil logge ut?",
|
"confirmations.logout.message": "Er du sikker på at du vil logge ut?",
|
||||||
|
"confirmations.logout.title": "Logg ut?",
|
||||||
"confirmations.mute.confirm": "Demp",
|
"confirmations.mute.confirm": "Demp",
|
||||||
"confirmations.redraft.confirm": "Slett og skriv på nytt",
|
"confirmations.redraft.confirm": "Slett og skriv på nytt",
|
||||||
"confirmations.redraft.message": "Er du sikker på at du vil slette dette innlegget og lagre det på nytt? Favoritter og fremhevinger vil gå tapt, og svar til det originale innlegget vil bli foreldreløse.",
|
"confirmations.redraft.message": "Er du sikker på at du vil slette dette innlegget og lagre det på nytt? Favoritter og fremhevinger vil gå tapt, og svar til det originale innlegget vil bli foreldreløse.",
|
||||||
|
"confirmations.redraft.title": "Slett og skriv på nytt?",
|
||||||
"confirmations.reply.confirm": "Svar",
|
"confirmations.reply.confirm": "Svar",
|
||||||
"confirmations.reply.message": "Å svare nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
"confirmations.reply.message": "Å svare nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
||||||
|
"confirmations.reply.title": "Overskriv innlegg?",
|
||||||
"confirmations.unfollow.confirm": "Slutt å følge",
|
"confirmations.unfollow.confirm": "Slutt å følge",
|
||||||
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
||||||
|
"confirmations.unfollow.title": "Slutt å følge bruker?",
|
||||||
|
"content_warning.hide": "Skjul innlegg",
|
||||||
|
"content_warning.show": "Vis likevel",
|
||||||
"conversation.delete": "Slett samtalen",
|
"conversation.delete": "Slett samtalen",
|
||||||
"conversation.mark_as_read": "Marker som lest",
|
"conversation.mark_as_read": "Marker som lest",
|
||||||
"conversation.open": "Vis samtale",
|
"conversation.open": "Vis samtale",
|
||||||
|
@ -192,6 +215,27 @@
|
||||||
"dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå. Nyere innlegg med flere fremhevinger og favoritter er rangert høyere.",
|
"dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå. Nyere innlegg med flere fremhevinger og favoritter er rangert høyere.",
|
||||||
"dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.",
|
"dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.",
|
||||||
"dismissable_banner.public_timeline": "Dette er de siste offentlige innleggene fra mennesker på det sosiale nettet som folk på {domain} følger.",
|
"dismissable_banner.public_timeline": "Dette er de siste offentlige innleggene fra mennesker på det sosiale nettet som folk på {domain} følger.",
|
||||||
|
"domain_block_modal.block": "Blokker server",
|
||||||
|
"domain_block_modal.block_account_instead": "Blokker @{name} i stedet",
|
||||||
|
"domain_block_modal.they_can_interact_with_old_posts": "Personer fra denne serveren kan samhandle med dine gamle innlegg.",
|
||||||
|
"domain_block_modal.they_cant_follow": "Ingen fra denne serveren kan følge deg.",
|
||||||
|
"domain_block_modal.they_wont_know": "De kommer ikke til å få vite at du har valgt å blokkere dem.",
|
||||||
|
"domain_block_modal.title": "Blokker domenet?",
|
||||||
|
"domain_block_modal.you_will_lose_followers": "Alle dine følgere fra denne serveren vil bli fjernet.",
|
||||||
|
"domain_block_modal.you_wont_see_posts": "Du vil ikke se innlegg eller få varsler fra brukere på denne serveren.",
|
||||||
|
"domain_pill.activitypub_lets_connect": "Den lar deg koble til og samhandle med folk ikke bare på Mastodon, men også på tvers av forskjellige sosiale apper.",
|
||||||
|
"domain_pill.activitypub_like_language": "ActivityPub er liksom språket Mastodon snakker med andre sosiale nettverk.",
|
||||||
|
"domain_pill.server": "Server",
|
||||||
|
"domain_pill.their_handle": "Deres håndtak:",
|
||||||
|
"domain_pill.their_server": "Deres digitale hjem, hvor alle innleggene deres bor.",
|
||||||
|
"domain_pill.their_username": "Deres unike identifikator på serveren sin. Det er mulig å finne brukere med samme brukernavn på forskjellige servere.",
|
||||||
|
"domain_pill.username": "Brukernavn",
|
||||||
|
"domain_pill.whats_in_a_handle": "Hva er et håndtak?",
|
||||||
|
"domain_pill.who_they_are": "Siden håndtakene sier hvem noen er og hvor de er, kan du samhandle med folk på tvers av det sosiale nettverket bestående av <button>plattformer som støtter ActivityPub</button>.",
|
||||||
|
"domain_pill.who_you_are": "Fordi ditt håndtak sier hvem du er og hvor du er, kan folk kommunisere med deg på tvers av <button>plattformer som støtter ActivityPub</button>.",
|
||||||
|
"domain_pill.your_handle": "Din håndtak:",
|
||||||
|
"domain_pill.your_server": "Ditt digitale hjem, hvor alle dine innlegg bor. Liker du ikke denne? Flytt till en annen server når som helst og ta med følgerne dine.",
|
||||||
|
"domain_pill.your_username": "Din unike identifikator på denne serveren. Det er mulig å finne brukere med samme brukernavn på forskjellige servere.",
|
||||||
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
||||||
"embed.preview": "Slik kommer det til å se ut:",
|
"embed.preview": "Slik kommer det til å se ut:",
|
||||||
"emoji_button.activity": "Aktivitet",
|
"emoji_button.activity": "Aktivitet",
|
||||||
|
@ -228,6 +272,7 @@
|
||||||
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
|
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
|
||||||
"empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
|
"empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
|
||||||
"empty_column.mutes": "Du har ikke dempet noen brukere enda.",
|
"empty_column.mutes": "Du har ikke dempet noen brukere enda.",
|
||||||
|
"empty_column.notification_requests": "Alt klart! Det er ingenting her. Når du mottar nye varsler, vises de her i henhold til dine innstillinger.",
|
||||||
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
|
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
|
||||||
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
|
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
|
||||||
"error.unexpected_crash.explanation": "På grunn av en bug i koden vår eller et nettleserkompatibilitetsproblem, kunne denne siden ikke vises riktig.",
|
"error.unexpected_crash.explanation": "På grunn av en bug i koden vår eller et nettleserkompatibilitetsproblem, kunne denne siden ikke vises riktig.",
|
||||||
|
@ -258,13 +303,30 @@
|
||||||
"filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
|
"filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
|
||||||
"filter_modal.select_filter.title": "Filtrer dette innlegget",
|
"filter_modal.select_filter.title": "Filtrer dette innlegget",
|
||||||
"filter_modal.title.status": "Filtrer et innlegg",
|
"filter_modal.title.status": "Filtrer et innlegg",
|
||||||
|
"filter_warning.matches_filter": "Passer med filteret «{title}»",
|
||||||
|
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {en person} other {# folk}} du kanskje kjenner",
|
||||||
|
"filtered_notifications_banner.title": "Filtrerte varsler",
|
||||||
"firehose.all": "Alt",
|
"firehose.all": "Alt",
|
||||||
"firehose.local": "Denne serveren",
|
"firehose.local": "Denne serveren",
|
||||||
"firehose.remote": "Andre servere",
|
"firehose.remote": "Andre servere",
|
||||||
"follow_request.authorize": "Autoriser",
|
"follow_request.authorize": "Autoriser",
|
||||||
"follow_request.reject": "Avvis",
|
"follow_request.reject": "Avvis",
|
||||||
"follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
|
"follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
|
||||||
|
"follow_suggestions.curated_suggestion": "Utvalgt av staben",
|
||||||
|
"follow_suggestions.dismiss": "Ikke vis igjen",
|
||||||
|
"follow_suggestions.featured_longer": "Håndplukket av {domain}-teamet",
|
||||||
|
"follow_suggestions.friends_of_friends_longer": "Populært blant personer du følger",
|
||||||
|
"follow_suggestions.hints.featured": "Denne profilen er håndplukket av {domain}-teamet.",
|
||||||
|
"follow_suggestions.hints.friends_of_friends": "Denne profilen er populær blant de du følger.",
|
||||||
|
"follow_suggestions.hints.most_followed": "Denne profilen er en av de på {domain} som har flest følgere.",
|
||||||
|
"follow_suggestions.hints.most_interactions": "Denne profilen fått mye oppmerksomhet i det siste på {domain}.",
|
||||||
|
"follow_suggestions.hints.similar_to_recently_followed": "Denne profilen ligner på profilene du nylig har fulgt.",
|
||||||
|
"follow_suggestions.personalized_suggestion": "Personlig forslag",
|
||||||
|
"follow_suggestions.popular_suggestion": "Populært forslag",
|
||||||
|
"follow_suggestions.popular_suggestion_longer": "Populært på {domain}",
|
||||||
|
"follow_suggestions.similar_to_recently_followed_longer": "Likner på profiler du nylig har fulgt",
|
||||||
"follow_suggestions.view_all": "Vis alle",
|
"follow_suggestions.view_all": "Vis alle",
|
||||||
|
"follow_suggestions.who_to_follow": "Hvem du kan følge",
|
||||||
"followed_tags": "Fulgte emneknagger",
|
"followed_tags": "Fulgte emneknagger",
|
||||||
"footer.about": "Om",
|
"footer.about": "Om",
|
||||||
"footer.directory": "Profilkatalog",
|
"footer.directory": "Profilkatalog",
|
||||||
|
@ -291,6 +353,14 @@
|
||||||
"hashtag.follow": "Følg emneknagg",
|
"hashtag.follow": "Følg emneknagg",
|
||||||
"hashtag.unfollow": "Slutt å følge emneknagg",
|
"hashtag.unfollow": "Slutt å følge emneknagg",
|
||||||
"hashtags.and_other": "…og {count, plural, one{en til} other {# til}}",
|
"hashtags.and_other": "…og {count, plural, one{en til} other {# til}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Følgere for denne profilen mangler kanskje.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Hvem denne profilen følger mangler kanskje.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Det kan hende at noen av innleggene til denne profilen mangler.",
|
||||||
|
"hints.profiles.see_more_followers": "Se flere følgere på {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Se flere som følger på {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Se flere innlegg på {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Svar fra andre servere mangler kanskje.",
|
||||||
|
"hints.threads.see_more": "Se flere svar på {domain}",
|
||||||
"home.column_settings.show_reblogs": "Vis fremhevinger",
|
"home.column_settings.show_reblogs": "Vis fremhevinger",
|
||||||
"home.column_settings.show_replies": "Vis svar",
|
"home.column_settings.show_replies": "Vis svar",
|
||||||
"home.hide_announcements": "Skjul kunngjøring",
|
"home.hide_announcements": "Skjul kunngjøring",
|
||||||
|
@ -298,6 +368,17 @@
|
||||||
"home.pending_critical_update.link": "Se oppdateringer",
|
"home.pending_critical_update.link": "Se oppdateringer",
|
||||||
"home.pending_critical_update.title": "Kritisk sikkerhetsoppdatering er tilgjengelig!",
|
"home.pending_critical_update.title": "Kritisk sikkerhetsoppdatering er tilgjengelig!",
|
||||||
"home.show_announcements": "Vis kunngjøring",
|
"home.show_announcements": "Vis kunngjøring",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon kan ikke informere brukere at du har ignorert deres varsler. Å ignorere varsler vil ikke stoppe meldinger selv fra å bli sendt.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Filtrer i stedet",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Du kan fremdeles akseptere, avvise eller rapportere brukere",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering bidrar til å unngå potensiell forvirring",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Du kan gjennomgå filtrerte varsler for seg",
|
||||||
|
"ignore_notifications_modal.ignore": "Overse varsler",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Overse varsler fra modererte kontoer?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Overse varsler fra nye kontoer?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Overse varsler fra folk som ikke følger deg?",
|
||||||
|
"ignore_notifications_modal.not_following_title": "Overse varsler fra folk du ikke følger?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Overse varsler fra uoppfordrede private omtaler?",
|
||||||
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
|
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
|
||||||
"interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
|
"interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
|
||||||
"interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
|
"interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
|
||||||
|
@ -358,6 +439,8 @@
|
||||||
"limited_account_hint.action": "Vis profil likevel",
|
"limited_account_hint.action": "Vis profil likevel",
|
||||||
"limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.",
|
"limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.",
|
||||||
"link_preview.author": "Av {name}",
|
"link_preview.author": "Av {name}",
|
||||||
|
"link_preview.more_from_author": "Mer fra {name}",
|
||||||
|
"link_preview.shares": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}",
|
||||||
"lists.account.add": "Legg til i listen",
|
"lists.account.add": "Legg til i listen",
|
||||||
"lists.account.remove": "Fjern fra listen",
|
"lists.account.remove": "Fjern fra listen",
|
||||||
"lists.delete": "Slett listen",
|
"lists.delete": "Slett listen",
|
||||||
|
@ -376,7 +459,17 @@
|
||||||
"loading_indicator.label": "Laster…",
|
"loading_indicator.label": "Laster…",
|
||||||
"media_gallery.toggle_visible": "Veksle synlighet",
|
"media_gallery.toggle_visible": "Veksle synlighet",
|
||||||
"moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
|
"moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
|
||||||
|
"mute_modal.hide_from_notifications": "Ikke varsle",
|
||||||
|
"mute_modal.hide_options": "Skjul alternativer",
|
||||||
|
"mute_modal.indefinite": "Til jeg opphever dempingen",
|
||||||
|
"mute_modal.show_options": "Vis alternativer",
|
||||||
|
"mute_modal.they_can_mention_and_follow": "De kan nevne og følge deg, men du kommer ikke til å se dem.",
|
||||||
|
"mute_modal.they_wont_know": "De kommer ikke til å få vite at du har valgt å skjule dem.",
|
||||||
|
"mute_modal.title": "Demp bruker?",
|
||||||
|
"mute_modal.you_wont_see_mentions": "Du kommer ikke til å se innlegg som nevner dem.",
|
||||||
|
"mute_modal.you_wont_see_posts": "De kan fremdeles se dine innlegg, men du kommer ikke til å se deres.",
|
||||||
"navigation_bar.about": "Om",
|
"navigation_bar.about": "Om",
|
||||||
|
"navigation_bar.administration": "Administrasjon",
|
||||||
"navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet",
|
"navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet",
|
||||||
"navigation_bar.blocks": "Blokkerte brukere",
|
"navigation_bar.blocks": "Blokkerte brukere",
|
||||||
"navigation_bar.bookmarks": "Bokmerker",
|
"navigation_bar.bookmarks": "Bokmerker",
|
||||||
|
@ -393,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Følginger og følgere",
|
"navigation_bar.follows_and_followers": "Følginger og følgere",
|
||||||
"navigation_bar.lists": "Lister",
|
"navigation_bar.lists": "Lister",
|
||||||
"navigation_bar.logout": "Logg ut",
|
"navigation_bar.logout": "Logg ut",
|
||||||
|
"navigation_bar.moderation": "Moderering",
|
||||||
"navigation_bar.mutes": "Dempede brukere",
|
"navigation_bar.mutes": "Dempede brukere",
|
||||||
"navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.",
|
"navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.",
|
||||||
"navigation_bar.personal": "Personlig",
|
"navigation_bar.personal": "Personlig",
|
||||||
|
@ -403,6 +497,7 @@
|
||||||
"navigation_bar.security": "Sikkerhet",
|
"navigation_bar.security": "Sikkerhet",
|
||||||
"not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.",
|
"not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.",
|
||||||
"notification.admin.report": "{name} rapporterte {target}",
|
"notification.admin.report": "{name} rapporterte {target}",
|
||||||
|
"notification.admin.report_account": "{name} rapporterte {count, plural, one {et innlegg} other {# innlegg}} fra {target} for {category}",
|
||||||
"notification.admin.sign_up": "{name} registrerte seg",
|
"notification.admin.sign_up": "{name} registrerte seg",
|
||||||
"notification.favourite": "{name} favorittmarkerte innlegget ditt",
|
"notification.favourite": "{name} favorittmarkerte innlegget ditt",
|
||||||
"notification.follow": "{name} fulgte deg",
|
"notification.follow": "{name} fulgte deg",
|
||||||
|
@ -417,6 +512,8 @@
|
||||||
"notifications.column_settings.admin.sign_up": "Nye registreringer:",
|
"notifications.column_settings.admin.sign_up": "Nye registreringer:",
|
||||||
"notifications.column_settings.alert": "Skrivebordsvarslinger",
|
"notifications.column_settings.alert": "Skrivebordsvarslinger",
|
||||||
"notifications.column_settings.favourite": "Favoritter:",
|
"notifications.column_settings.favourite": "Favoritter:",
|
||||||
|
"notifications.column_settings.filter_bar.advanced": "Vis alle kategorier",
|
||||||
|
"notifications.column_settings.filter_bar.category": "Hurtigfiltreringslinje",
|
||||||
"notifications.column_settings.follow": "Nye følgere:",
|
"notifications.column_settings.follow": "Nye følgere:",
|
||||||
"notifications.column_settings.follow_request": "Nye følgerforespørsler:",
|
"notifications.column_settings.follow_request": "Nye følgerforespørsler:",
|
||||||
"notifications.column_settings.mention": "Nevnt:",
|
"notifications.column_settings.mention": "Nevnt:",
|
||||||
|
@ -442,6 +539,23 @@
|
||||||
"notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser",
|
"notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser",
|
||||||
"notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før",
|
"notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før",
|
||||||
"notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.",
|
"notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.",
|
||||||
|
"notifications.policy.accept": "Godta",
|
||||||
|
"notifications.policy.accept_hint": "Vis i varsler",
|
||||||
|
"notifications.policy.drop": "Overse",
|
||||||
|
"notifications.policy.drop_hint": "Send til avgrunnen, for aldri å bli sett igjen",
|
||||||
|
"notifications.policy.filter": "Filter",
|
||||||
|
"notifications.policy.filter_hint": "Send til filtrert varslingsinnboks",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Begrenset av serverens moderatorer",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Modererte kontoer",
|
||||||
|
"notifications.policy.filter_new_accounts.hint": "Opprettet {days, plural, one {den siste dagen} other {i de siste # dagene}}",
|
||||||
|
"notifications.policy.filter_new_accounts_title": "Nye kontoer",
|
||||||
|
"notifications.policy.filter_not_followers_hint": "Inkludert personer som har fulgt deg mindre enn {days, plural, one {en dag} other {# dager}}",
|
||||||
|
"notifications.policy.filter_not_followers_title": "Personer som ikke følger deg",
|
||||||
|
"notifications.policy.filter_not_following_hint": "Inntil du manuelt godkjenner dem",
|
||||||
|
"notifications.policy.filter_not_following_title": "Personer du ikke følger",
|
||||||
|
"notifications.policy.filter_private_mentions_hint": "Filtrert med mindre det er et svar som omtaler deg, eller hvis du følger avsenderen",
|
||||||
|
"notifications.policy.filter_private_mentions_title": "Uoppfordrede private omtaler",
|
||||||
|
"notifications.policy.title": "Behandle varsler fra…",
|
||||||
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
|
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
|
||||||
"notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.",
|
"notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.",
|
||||||
"notifications_permission_banner.title": "Aldri gå glipp av noe",
|
"notifications_permission_banner.title": "Aldri gå glipp av noe",
|
||||||
|
@ -602,7 +716,7 @@
|
||||||
"sign_in_banner.sso_redirect": "Logg inn eller registrer deg",
|
"sign_in_banner.sso_redirect": "Logg inn eller registrer deg",
|
||||||
"status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
|
"status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
|
||||||
"status.admin_domain": "Åpne moderatorgrensesnittet for {domain}",
|
"status.admin_domain": "Åpne moderatorgrensesnittet for {domain}",
|
||||||
"status.admin_status": "Åpne denne statusen i moderatorgrensesnittet",
|
"status.admin_status": "Åpne dette innlegget i moderatorgrensesnittet",
|
||||||
"status.block": "Blokker @{name}",
|
"status.block": "Blokker @{name}",
|
||||||
"status.bookmark": "Bokmerke",
|
"status.bookmark": "Bokmerke",
|
||||||
"status.cancel_reblog_private": "Fjern fremheving",
|
"status.cancel_reblog_private": "Fjern fremheving",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
||||||
"about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}",
|
"about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}",
|
||||||
"about.rules": "Regras do servidor",
|
"about.rules": "Regras do servidor",
|
||||||
|
"account.account_note_header": "Nota pessoal",
|
||||||
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
||||||
"account.badges.bot": "Robô",
|
"account.badges.bot": "Robô",
|
||||||
"account.badges.group": "Grupo",
|
"account.badges.group": "Grupo",
|
||||||
|
@ -61,6 +62,7 @@
|
||||||
"account.requested_follow": "{name} quer te seguir",
|
"account.requested_follow": "{name} quer te seguir",
|
||||||
"account.share": "Compartilhar perfil de @{name}",
|
"account.share": "Compartilhar perfil de @{name}",
|
||||||
"account.show_reblogs": "Mostrar boosts de @{name}",
|
"account.show_reblogs": "Mostrar boosts de @{name}",
|
||||||
|
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
|
||||||
"account.unblock": "Desbloquear @{name}",
|
"account.unblock": "Desbloquear @{name}",
|
||||||
"account.unblock_domain": "Desbloquear domínio {domain}",
|
"account.unblock_domain": "Desbloquear domínio {domain}",
|
||||||
"account.unblock_short": "Desbloquear",
|
"account.unblock_short": "Desbloquear",
|
||||||
|
@ -95,6 +97,8 @@
|
||||||
"block_modal.title": "Bloquear usuário?",
|
"block_modal.title": "Bloquear usuário?",
|
||||||
"block_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
"block_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
||||||
"boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
|
"boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
|
||||||
|
"boost_modal.reblog": "Impulsionar a publicação?",
|
||||||
|
"boost_modal.undo_reblog": "Retirar o impulsionamento do post?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
||||||
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
||||||
"bundle_column_error.error.title": "Ah, não!",
|
"bundle_column_error.error.title": "Ah, não!",
|
||||||
|
@ -190,6 +194,8 @@
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "Você tem certeza de que deseja deixar de seguir {name}?",
|
"confirmations.unfollow.message": "Você tem certeza de que deseja deixar de seguir {name}?",
|
||||||
"confirmations.unfollow.title": "Deixar de seguir o usuário?",
|
"confirmations.unfollow.title": "Deixar de seguir o usuário?",
|
||||||
|
"content_warning.hide": "Ocultar post",
|
||||||
|
"content_warning.show": "Mostrar mesmo assim",
|
||||||
"conversation.delete": "Excluir conversa",
|
"conversation.delete": "Excluir conversa",
|
||||||
"conversation.mark_as_read": "Marcar como lida",
|
"conversation.mark_as_read": "Marcar como lida",
|
||||||
"conversation.open": "Ver conversa",
|
"conversation.open": "Ver conversa",
|
||||||
|
@ -297,6 +303,8 @@
|
||||||
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
|
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
|
||||||
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
||||||
"filter_modal.title.status": "Filtrar uma publicação",
|
"filter_modal.title.status": "Filtrar uma publicação",
|
||||||
|
"filter_warning.matches_filter": "Correspondente ao filtro “{title}”",
|
||||||
|
"filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça",
|
||||||
"filtered_notifications_banner.title": "Notificações filtradas",
|
"filtered_notifications_banner.title": "Notificações filtradas",
|
||||||
"firehose.all": "Tudo",
|
"firehose.all": "Tudo",
|
||||||
"firehose.local": "Este servidor",
|
"firehose.local": "Este servidor",
|
||||||
|
@ -345,6 +353,14 @@
|
||||||
"hashtag.follow": "Seguir hashtag",
|
"hashtag.follow": "Seguir hashtag",
|
||||||
"hashtag.unfollow": "Parar de seguir hashtag",
|
"hashtag.unfollow": "Parar de seguir hashtag",
|
||||||
"hashtags.and_other": "…e {count, plural, one {}other {outros #}}",
|
"hashtags.and_other": "…e {count, plural, one {}other {outros #}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Os seguidores deste perfil podem estar faltando.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Os seguidores deste perfil podem estar faltando.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "É possível que algumas publicações deste perfil estejam faltando.",
|
||||||
|
"hints.profiles.see_more_followers": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Ver mais publicações em {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Respostas de outros servidores podem estar faltando.",
|
||||||
|
"hints.threads.see_more": "Ver mais respostas no {domain}",
|
||||||
"home.column_settings.show_reblogs": "Mostrar boosts",
|
"home.column_settings.show_reblogs": "Mostrar boosts",
|
||||||
"home.column_settings.show_replies": "Mostrar respostas",
|
"home.column_settings.show_replies": "Mostrar respostas",
|
||||||
"home.hide_announcements": "Ocultar comunicados",
|
"home.hide_announcements": "Ocultar comunicados",
|
||||||
|
@ -352,6 +368,13 @@
|
||||||
"home.pending_critical_update.link": "Ver atualizações",
|
"home.pending_critical_update.link": "Ver atualizações",
|
||||||
"home.pending_critical_update.title": "Atualização de segurança crítica disponível!",
|
"home.pending_critical_update.title": "Atualização de segurança crítica disponível!",
|
||||||
"home.show_announcements": "Mostrar comunicados",
|
"home.show_announcements": "Mostrar comunicados",
|
||||||
|
"ignore_notifications_modal.disclaimer": "O Mastodon não pode informar aos usuários que você ignorou suas notificações. Ignorar notificações não impedirá que as próprias mensagens sejam enviadas.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Filtrar em vez disso",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Você ainda conseguirá aceitar, rejeitar ou denunciar usuários",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "A filtragem ajuda a evitar confusão potencial",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Você pode rever notificações filtradas separadamente",
|
||||||
|
"ignore_notifications_modal.ignore": "Ignorar notificações",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Ignorar notificações de contas moderadas?",
|
||||||
"ignore_notifications_modal.new_accounts_title": "Ignorar notificações de novas contas?",
|
"ignore_notifications_modal.new_accounts_title": "Ignorar notificações de novas contas?",
|
||||||
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não seguem você?",
|
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não seguem você?",
|
||||||
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que você não segue?",
|
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que você não segue?",
|
||||||
|
@ -446,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
"mute_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
||||||
"mute_modal.you_wont_see_posts": "Eles ainda poderão ver suas publicações, mas você não verá as deles.",
|
"mute_modal.you_wont_see_posts": "Eles ainda poderão ver suas publicações, mas você não verá as deles.",
|
||||||
"navigation_bar.about": "Sobre",
|
"navigation_bar.about": "Sobre",
|
||||||
|
"navigation_bar.administration": "Administração",
|
||||||
"navigation_bar.advanced_interface": "Ativar na interface web avançada",
|
"navigation_bar.advanced_interface": "Ativar na interface web avançada",
|
||||||
"navigation_bar.blocks": "Usuários bloqueados",
|
"navigation_bar.blocks": "Usuários bloqueados",
|
||||||
"navigation_bar.bookmarks": "Salvos",
|
"navigation_bar.bookmarks": "Salvos",
|
||||||
|
@ -462,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Segue e seguidores",
|
"navigation_bar.follows_and_followers": "Segue e seguidores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Sair",
|
"navigation_bar.logout": "Sair",
|
||||||
|
"navigation_bar.moderation": "Moderação",
|
||||||
"navigation_bar.mutes": "Usuários silenciados",
|
"navigation_bar.mutes": "Usuários silenciados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publicações, contas e outras páginas específicas são abertas por padrão na interface 'web' clássica.",
|
"navigation_bar.opened_in_classic_interface": "Publicações, contas e outras páginas específicas são abertas por padrão na interface 'web' clássica.",
|
||||||
"navigation_bar.personal": "Pessoal",
|
"navigation_bar.personal": "Pessoal",
|
||||||
|
@ -472,10 +497,23 @@
|
||||||
"navigation_bar.security": "Segurança",
|
"navigation_bar.security": "Segurança",
|
||||||
"not_signed_in_indicator.not_signed_in": "Você precisa se autenticar para acessar este recurso.",
|
"not_signed_in_indicator.not_signed_in": "Você precisa se autenticar para acessar este recurso.",
|
||||||
"notification.admin.report": "{name} denunciou {target}",
|
"notification.admin.report": "{name} denunciou {target}",
|
||||||
|
"notification.admin.report_account": "{name} reportou {count, plural, one {Um post} other {# posts}} de {target} para {category}",
|
||||||
|
"notification.admin.report_account_other": "{name} reportou {count, plural, one {Um post} other {# posts}} de {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} Reportou {target} para {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} denunciou {target}",
|
||||||
"notification.admin.sign_up": "{name} se inscreveu",
|
"notification.admin.sign_up": "{name} se inscreveu",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# other} other {# outros}}",
|
||||||
"notification.favourite": "{name} favoritou sua publicação",
|
"notification.favourite": "{name} favoritou sua publicação",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name} e <a>{count, plural, one {# outro} other {# others}}</a> favoritaram a publicação",
|
||||||
"notification.follow": "{name} te seguiu",
|
"notification.follow": "{name} te seguiu",
|
||||||
|
"notification.follow.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} seguiu você",
|
||||||
"notification.follow_request": "{name} quer te seguir",
|
"notification.follow_request": "{name} quer te seguir",
|
||||||
|
"notification.follow_request.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} pediu para seguir você",
|
||||||
|
"notification.label.mention": "Menção",
|
||||||
|
"notification.label.private_mention": "Menção privada",
|
||||||
|
"notification.label.private_reply": "Resposta privada",
|
||||||
|
"notification.label.reply": "Resposta",
|
||||||
|
"notification.mention": "Menção",
|
||||||
"notification.moderation-warning.learn_more": "Aprender mais",
|
"notification.moderation-warning.learn_more": "Aprender mais",
|
||||||
"notification.moderation_warning": "Você recebeu um aviso de moderação",
|
"notification.moderation_warning": "Você recebeu um aviso de moderação",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Algumas das suas publicações foram removidas.",
|
"notification.moderation_warning.action_delete_statuses": "Algumas das suas publicações foram removidas.",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "Bloquear utilizador?",
|
"block_modal.title": "Bloquear utilizador?",
|
||||||
"block_modal.you_wont_see_mentions": "Não verá publicações que os mencionem.",
|
"block_modal.you_wont_see_mentions": "Não verá publicações que os mencionem.",
|
||||||
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
||||||
|
"boost_modal.reblog": "Impulsionar a publicação?",
|
||||||
|
"boost_modal.undo_reblog": "Retirar post?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar relatório de erros",
|
"bundle_column_error.copy_stacktrace": "Copiar relatório de erros",
|
||||||
"bundle_column_error.error.body": "A página solicitada não pôde ser sintetizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.",
|
"bundle_column_error.error.body": "A página solicitada não pôde ser sintetizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.",
|
||||||
"bundle_column_error.error.title": "Ó, não!",
|
"bundle_column_error.error.title": "Ó, não!",
|
||||||
|
@ -192,6 +194,8 @@
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
||||||
"confirmations.unfollow.title": "Deixar de seguir utilizador?",
|
"confirmations.unfollow.title": "Deixar de seguir utilizador?",
|
||||||
|
"content_warning.hide": "Ocultar publicação",
|
||||||
|
"content_warning.show": "Mostrar mesmo assim",
|
||||||
"conversation.delete": "Eliminar conversa",
|
"conversation.delete": "Eliminar conversa",
|
||||||
"conversation.mark_as_read": "Marcar como lida",
|
"conversation.mark_as_read": "Marcar como lida",
|
||||||
"conversation.open": "Ver conversa",
|
"conversation.open": "Ver conversa",
|
||||||
|
@ -299,6 +303,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova",
|
"filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova",
|
||||||
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
||||||
"filter_modal.title.status": "Filtrar uma publicação",
|
"filter_modal.title.status": "Filtrar uma publicação",
|
||||||
|
"filter_warning.matches_filter": "Corresponde ao filtro “{title}”",
|
||||||
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer",
|
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer",
|
||||||
"filtered_notifications_banner.title": "Notificações filtradas",
|
"filtered_notifications_banner.title": "Notificações filtradas",
|
||||||
"firehose.all": "Todas",
|
"firehose.all": "Todas",
|
||||||
|
@ -348,6 +353,12 @@
|
||||||
"hashtag.follow": "Seguir #etiqueta",
|
"hashtag.follow": "Seguir #etiqueta",
|
||||||
"hashtag.unfollow": "Deixar de seguir #etiqueta",
|
"hashtag.unfollow": "Deixar de seguir #etiqueta",
|
||||||
"hashtags.and_other": "…e {count, plural, other {mais #}}",
|
"hashtags.and_other": "…e {count, plural, other {mais #}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Podem faltar seguidores neste perfil.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "O número de perfis seguidos por este perfil pode faltar.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Podem faltar alguns posts deste perfil.",
|
||||||
|
"hints.profiles.see_more_followers": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Veja mais perfis seguidos em {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Ver mais posts em {domain}",
|
||||||
"home.column_settings.show_reblogs": "Mostrar impulsos",
|
"home.column_settings.show_reblogs": "Mostrar impulsos",
|
||||||
"home.column_settings.show_replies": "Mostrar respostas",
|
"home.column_settings.show_replies": "Mostrar respostas",
|
||||||
"home.hide_announcements": "Ocultar comunicações",
|
"home.hide_announcements": "Ocultar comunicações",
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
"block_modal.title": "Blokovať užívateľa?",
|
"block_modal.title": "Blokovať užívateľa?",
|
||||||
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
|
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
|
||||||
"boost_modal.combo": "Nabudúce môžete preskočiť stlačením {combo}",
|
"boost_modal.combo": "Nabudúce môžete preskočiť stlačením {combo}",
|
||||||
|
"boost_modal.reblog": "Vyzdvihnúť príspevok?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopírovať chybovú hlášku",
|
"bundle_column_error.copy_stacktrace": "Kopírovať chybovú hlášku",
|
||||||
"bundle_column_error.error.body": "Požadovanú stránku nebolo možné vykresliť. Môže to byť spôsobené chybou v našom kóde alebo problémom s kompatibilitou prehliadača.",
|
"bundle_column_error.error.body": "Požadovanú stránku nebolo možné vykresliť. Môže to byť spôsobené chybou v našom kóde alebo problémom s kompatibilitou prehliadača.",
|
||||||
"bundle_column_error.error.title": "Ale nie!",
|
"bundle_column_error.error.title": "Ale nie!",
|
||||||
|
@ -187,6 +188,8 @@
|
||||||
"confirmations.unfollow.confirm": "Prestať sledovať",
|
"confirmations.unfollow.confirm": "Prestať sledovať",
|
||||||
"confirmations.unfollow.message": "Určite chcete prestať sledovať {name}?",
|
"confirmations.unfollow.message": "Určite chcete prestať sledovať {name}?",
|
||||||
"confirmations.unfollow.title": "Prestať sledovať užívateľa?",
|
"confirmations.unfollow.title": "Prestať sledovať užívateľa?",
|
||||||
|
"content_warning.hide": "Skryť príspevok",
|
||||||
|
"content_warning.show": "Aj tak zobraziť",
|
||||||
"conversation.delete": "Vymazať konverzáciu",
|
"conversation.delete": "Vymazať konverzáciu",
|
||||||
"conversation.mark_as_read": "Označiť ako prečítanú",
|
"conversation.mark_as_read": "Označiť ako prečítanú",
|
||||||
"conversation.open": "Zobraziť konverzáciu",
|
"conversation.open": "Zobraziť konverzáciu",
|
||||||
|
@ -285,6 +288,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú",
|
"filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú",
|
||||||
"filter_modal.select_filter.title": "Filtrovanie tohto príspevku",
|
"filter_modal.select_filter.title": "Filtrovanie tohto príspevku",
|
||||||
"filter_modal.title.status": "Filtrovanie príspevku",
|
"filter_modal.title.status": "Filtrovanie príspevku",
|
||||||
|
"filter_warning.matches_filter": "Zhody triedenia “{title}”",
|
||||||
"filtered_notifications_banner.title": "Filtrované oznámenia",
|
"filtered_notifications_banner.title": "Filtrované oznámenia",
|
||||||
"firehose.all": "Všetko",
|
"firehose.all": "Všetko",
|
||||||
"firehose.local": "Tento server",
|
"firehose.local": "Tento server",
|
||||||
|
@ -424,6 +428,7 @@
|
||||||
"mute_modal.show_options": "Zobraziť možnosti",
|
"mute_modal.show_options": "Zobraziť možnosti",
|
||||||
"mute_modal.title": "Stíšiť užívateľa?",
|
"mute_modal.title": "Stíšiť užívateľa?",
|
||||||
"navigation_bar.about": "O tomto serveri",
|
"navigation_bar.about": "O tomto serveri",
|
||||||
|
"navigation_bar.administration": "Spravovanie",
|
||||||
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
|
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
|
||||||
"navigation_bar.blocks": "Blokované účty",
|
"navigation_bar.blocks": "Blokované účty",
|
||||||
"navigation_bar.bookmarks": "Záložky",
|
"navigation_bar.bookmarks": "Záložky",
|
||||||
|
@ -440,6 +445,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Sledovania a sledovatelia",
|
"navigation_bar.follows_and_followers": "Sledovania a sledovatelia",
|
||||||
"navigation_bar.lists": "Zoznamy",
|
"navigation_bar.lists": "Zoznamy",
|
||||||
"navigation_bar.logout": "Odhlásiť sa",
|
"navigation_bar.logout": "Odhlásiť sa",
|
||||||
|
"navigation_bar.moderation": "Moderovanie",
|
||||||
"navigation_bar.mutes": "Stíšené účty",
|
"navigation_bar.mutes": "Stíšené účty",
|
||||||
"navigation_bar.opened_in_classic_interface": "Príspevky, účty a iné špeciálne stránky sú predvolene otvárané v klasickom webovom rozhraní.",
|
"navigation_bar.opened_in_classic_interface": "Príspevky, účty a iné špeciálne stránky sú predvolene otvárané v klasickom webovom rozhraní.",
|
||||||
"navigation_bar.personal": "Osobné",
|
"navigation_bar.personal": "Osobné",
|
||||||
|
@ -474,8 +480,11 @@
|
||||||
"notification.update": "{name} upravuje príspevok",
|
"notification.update": "{name} upravuje príspevok",
|
||||||
"notification_requests.accept": "Prijať",
|
"notification_requests.accept": "Prijať",
|
||||||
"notification_requests.dismiss": "Zamietnuť",
|
"notification_requests.dismiss": "Zamietnuť",
|
||||||
|
"notification_requests.edit_selection": "Uprav",
|
||||||
|
"notification_requests.exit_selection": "Hotovo",
|
||||||
"notification_requests.notifications_from": "Oboznámenia od {name}",
|
"notification_requests.notifications_from": "Oboznámenia od {name}",
|
||||||
"notification_requests.title": "Filtrované oboznámenia",
|
"notification_requests.title": "Filtrované oboznámenia",
|
||||||
|
"notification_requests.view": "Zobraz upozornenia",
|
||||||
"notifications.clear": "Vyčistiť upozornenia",
|
"notifications.clear": "Vyčistiť upozornenia",
|
||||||
"notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?",
|
"notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?",
|
||||||
"notifications.clear_title": "Vyčistiť upozornenia?",
|
"notifications.clear_title": "Vyčistiť upozornenia?",
|
||||||
|
@ -509,6 +518,9 @@
|
||||||
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
|
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
|
||||||
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
|
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
|
||||||
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
|
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
|
||||||
|
"notifications.policy.drop": "Ignoruj",
|
||||||
|
"notifications.policy.filter": "Triediť",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Moderované účty",
|
||||||
"notifications.policy.filter_new_accounts_title": "Nové účty",
|
"notifications.policy.filter_new_accounts_title": "Nové účty",
|
||||||
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
|
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
|
||||||
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
|
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
|
||||||
|
|
|
@ -514,13 +514,13 @@
|
||||||
"notification.label.private_reply": "Приватна відповідь",
|
"notification.label.private_reply": "Приватна відповідь",
|
||||||
"notification.label.reply": "Відповідь",
|
"notification.label.reply": "Відповідь",
|
||||||
"notification.mention": "Згадка",
|
"notification.mention": "Згадка",
|
||||||
"notification.moderation-warning.learn_more": "Дізнатися більше",
|
"notification.moderation-warning.learn_more": "Докладніше",
|
||||||
"notification.moderation_warning": "Ви отримали попередження модерації",
|
"notification.moderation_warning": "Ви отримали попередження модерації",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Деякі з ваших дописів було видалено.",
|
"notification.moderation_warning.action_delete_statuses": "Деякі з ваших дописів було вилучено.",
|
||||||
"notification.moderation_warning.action_disable": "Ваш обліковий запис було вимкнено.",
|
"notification.moderation_warning.action_disable": "Ваш обліковий запис було вимкнено.",
|
||||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Деякі з ваших дописів були позначені як чутливі.",
|
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Деякі з ваших дописів були позначені делікатними.",
|
||||||
"notification.moderation_warning.action_none": "Ваш обліковий запис отримав попередження модерації.",
|
"notification.moderation_warning.action_none": "Ваш обліковий запис отримав попередження модерації.",
|
||||||
"notification.moderation_warning.action_sensitive": "Відтепер ваші дописи будуть позначені як чутливі.",
|
"notification.moderation_warning.action_sensitive": "Відтепер ваші дописи будуть позначені делікатними.",
|
||||||
"notification.moderation_warning.action_silence": "Ваш обліковий запис було обмежено.",
|
"notification.moderation_warning.action_silence": "Ваш обліковий запис було обмежено.",
|
||||||
"notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.",
|
"notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.",
|
||||||
"notification.own_poll": "Ваше опитування завершилося",
|
"notification.own_poll": "Ваше опитування завершилося",
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
"account.no_bio": "Chưa có miêu tả.",
|
"account.no_bio": "Chưa có miêu tả.",
|
||||||
"account.open_original_page": "Mở trang gốc",
|
"account.open_original_page": "Mở trang gốc",
|
||||||
"account.posts": "Tút",
|
"account.posts": "Tút",
|
||||||
"account.posts_with_replies": "Lượt trả lời",
|
"account.posts_with_replies": "Trả lời",
|
||||||
"account.report": "Báo cáo @{name}",
|
"account.report": "Báo cáo @{name}",
|
||||||
"account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
|
"account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
|
||||||
"account.requested_follow": "{name} yêu cầu theo dõi bạn",
|
"account.requested_follow": "{name} yêu cầu theo dõi bạn",
|
||||||
|
@ -118,15 +118,15 @@
|
||||||
"closed_registrations_modal.title": "Đăng ký Mastodon",
|
"closed_registrations_modal.title": "Đăng ký Mastodon",
|
||||||
"column.about": "Giới thiệu",
|
"column.about": "Giới thiệu",
|
||||||
"column.blocks": "Người đã chặn",
|
"column.blocks": "Người đã chặn",
|
||||||
"column.bookmarks": "Đã lưu",
|
"column.bookmarks": "Những tút đã lưu",
|
||||||
"column.community": "Máy chủ này",
|
"column.community": "Máy chủ này",
|
||||||
"column.direct": "Nhắn riêng",
|
"column.direct": "Nhắn riêng",
|
||||||
"column.directory": "Tìm người cùng sở thích",
|
"column.directory": "Tìm người cùng sở thích",
|
||||||
"column.domain_blocks": "Máy chủ đã chặn",
|
"column.domain_blocks": "Máy chủ đã chặn",
|
||||||
"column.favourites": "Lượt thích",
|
"column.favourites": "Những tút đã thích",
|
||||||
"column.firehose": "Bảng tin",
|
"column.firehose": "Bảng tin",
|
||||||
"column.follow_requests": "Yêu cầu theo dõi",
|
"column.follow_requests": "Yêu cầu theo dõi",
|
||||||
"column.home": "Trang chính",
|
"column.home": "Trang chủ",
|
||||||
"column.lists": "Danh sách",
|
"column.lists": "Danh sách",
|
||||||
"column.mutes": "Người đã ẩn",
|
"column.mutes": "Người đã ẩn",
|
||||||
"column.notifications": "Thông báo",
|
"column.notifications": "Thông báo",
|
||||||
|
@ -368,8 +368,17 @@
|
||||||
"home.pending_critical_update.link": "Xem bản cập nhật",
|
"home.pending_critical_update.link": "Xem bản cập nhật",
|
||||||
"home.pending_critical_update.title": "Có bản cập nhật bảo mật quan trọng!",
|
"home.pending_critical_update.title": "Có bản cập nhật bảo mật quan trọng!",
|
||||||
"home.show_announcements": "Xem thông báo máy chủ",
|
"home.show_announcements": "Xem thông báo máy chủ",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon sẽ không thông báo cho người dùng rằng bạn đã bỏ qua thông báo của họ. Họ sẽ vẫn có thể tương tác với bạn.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Lọc thay thế",
|
||||||
"ignore_notifications_modal.filter_to_act_users": "Bạn vẫn có thể chấp nhận, từ chối hoặc báo cáo người khác",
|
"ignore_notifications_modal.filter_to_act_users": "Bạn vẫn có thể chấp nhận, từ chối hoặc báo cáo người khác",
|
||||||
"ignore_notifications_modal.filter_to_review_separately": "Bạn có thể xem lại các thông báo đã lọc riêng biệt",
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Lọc giúp tránh nhầm lẫn tiềm ẩn",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Bạn có thể xem lại riêng các thông báo đã lọc",
|
||||||
|
"ignore_notifications_modal.ignore": "Bỏ qua thông báo",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Bỏ qua thông báo từ các tài khoản bị kiểm duyệt?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Bỏ qua thông báo từ các tài khoản mới đăng ký?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Bỏ qua thông báo từ những người chưa theo dõi bạn?",
|
||||||
|
"ignore_notifications_modal.not_following_title": "Bỏ qua thông báo từ những người bạn không theo dõi?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Bỏ qua thông báo từ những lượt Nhắn Riêng không mong muốn?",
|
||||||
"interaction_modal.description.favourite": "Với tài khoản Mastodon, bạn có thể cho người đăng biết bạn thích tút này và lưu lại tút.",
|
"interaction_modal.description.favourite": "Với tài khoản Mastodon, bạn có thể cho người đăng biết bạn thích tút này và lưu lại tút.",
|
||||||
"interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.",
|
"interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.",
|
||||||
"interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.",
|
"interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.",
|
||||||
|
@ -463,14 +472,14 @@
|
||||||
"navigation_bar.administration": "Quản trị",
|
"navigation_bar.administration": "Quản trị",
|
||||||
"navigation_bar.advanced_interface": "Dùng bố cục nhiều cột",
|
"navigation_bar.advanced_interface": "Dùng bố cục nhiều cột",
|
||||||
"navigation_bar.blocks": "Người đã chặn",
|
"navigation_bar.blocks": "Người đã chặn",
|
||||||
"navigation_bar.bookmarks": "Đã lưu",
|
"navigation_bar.bookmarks": "Tút lưu",
|
||||||
"navigation_bar.community_timeline": "Cộng đồng",
|
"navigation_bar.community_timeline": "Cộng đồng",
|
||||||
"navigation_bar.compose": "Soạn tút mới",
|
"navigation_bar.compose": "Soạn tút mới",
|
||||||
"navigation_bar.direct": "Nhắn riêng",
|
"navigation_bar.direct": "Nhắn riêng",
|
||||||
"navigation_bar.discover": "Khám phá",
|
"navigation_bar.discover": "Khám phá",
|
||||||
"navigation_bar.domain_blocks": "Máy chủ đã ẩn",
|
"navigation_bar.domain_blocks": "Máy chủ đã ẩn",
|
||||||
"navigation_bar.explore": "Xu hướng",
|
"navigation_bar.explore": "Xu hướng",
|
||||||
"navigation_bar.favourites": "Lượt thích",
|
"navigation_bar.favourites": "Tút thích",
|
||||||
"navigation_bar.filters": "Bộ lọc từ ngữ",
|
"navigation_bar.filters": "Bộ lọc từ ngữ",
|
||||||
"navigation_bar.follow_requests": "Yêu cầu theo dõi",
|
"navigation_bar.follow_requests": "Yêu cầu theo dõi",
|
||||||
"navigation_bar.followed_tags": "Hashtag theo dõi",
|
"navigation_bar.followed_tags": "Hashtag theo dõi",
|
||||||
|
@ -543,6 +552,7 @@
|
||||||
"notification_requests.minimize_banner": "Tinh giản banner lọc thông báo",
|
"notification_requests.minimize_banner": "Tinh giản banner lọc thông báo",
|
||||||
"notification_requests.notifications_from": "Thông báo từ {name}",
|
"notification_requests.notifications_from": "Thông báo từ {name}",
|
||||||
"notification_requests.title": "Thông báo đã lọc",
|
"notification_requests.title": "Thông báo đã lọc",
|
||||||
|
"notification_requests.view": "Hiện thông báo",
|
||||||
"notifications.clear": "Xóa hết thông báo",
|
"notifications.clear": "Xóa hết thông báo",
|
||||||
"notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
|
"notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
|
||||||
"notifications.clear_title": "Xóa hết thông báo?",
|
"notifications.clear_title": "Xóa hết thông báo?",
|
||||||
|
@ -579,6 +589,12 @@
|
||||||
"notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.",
|
"notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.",
|
||||||
"notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó",
|
"notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó",
|
||||||
"notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.",
|
"notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.",
|
||||||
|
"notifications.policy.accept": "Có",
|
||||||
|
"notifications.policy.accept_hint": "Hiện trong thông báo",
|
||||||
|
"notifications.policy.drop": "Không",
|
||||||
|
"notifications.policy.drop_hint": "Loại bỏ vĩnh viễn",
|
||||||
|
"notifications.policy.filter": "Lọc",
|
||||||
|
"notifications.policy.filter_hint": "Cho vào mục thông báo bị lọc",
|
||||||
"notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên",
|
"notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên",
|
||||||
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản",
|
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}",
|
"notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}",
|
||||||
|
@ -589,6 +605,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Những người bạn không theo dõi",
|
"notifications.policy.filter_not_following_title": "Những người bạn không theo dõi",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Được lọc trừ khi nó trả lời lượt nhắc từ bạn hoặc nếu bạn theo dõi người gửi",
|
"notifications.policy.filter_private_mentions_hint": "Được lọc trừ khi nó trả lời lượt nhắc từ bạn hoặc nếu bạn theo dõi người gửi",
|
||||||
"notifications.policy.filter_private_mentions_title": "Lượt nhắc riêng tư không được yêu cầu",
|
"notifications.policy.filter_private_mentions_title": "Lượt nhắc riêng tư không được yêu cầu",
|
||||||
|
"notifications.policy.title": "Quản lý thông báo từ…",
|
||||||
"notifications_permission_banner.enable": "Cho phép thông báo trên màn hình",
|
"notifications_permission_banner.enable": "Cho phép thông báo trên màn hình",
|
||||||
"notifications_permission_banner.how_to_control": "Hãy bật thông báo trên màn hình để không bỏ lỡ những thông báo từ Mastodon. Một khi đã bật, bạn có thể lựa chọn từng loại thông báo khác nhau thông qua {icon} nút bên dưới.",
|
"notifications_permission_banner.how_to_control": "Hãy bật thông báo trên màn hình để không bỏ lỡ những thông báo từ Mastodon. Một khi đã bật, bạn có thể lựa chọn từng loại thông báo khác nhau thông qua {icon} nút bên dưới.",
|
||||||
"notifications_permission_banner.title": "Không bỏ lỡ điều thú vị nào",
|
"notifications_permission_banner.title": "Không bỏ lỡ điều thú vị nào",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class RedisConfiguration
|
class RedisConnection
|
||||||
class << self
|
class << self
|
||||||
def establish_pool(new_pool_size)
|
def establish_pool(new_pool_size)
|
||||||
@pool&.shutdown(&:close)
|
@pool&.shutdown(&:close)
|
||||||
|
@ -22,33 +22,24 @@ class RedisConfiguration
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
attr_reader :config
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@config = REDIS_CONFIGURATION.base
|
||||||
|
end
|
||||||
|
|
||||||
def connection
|
def connection
|
||||||
if namespace?
|
namespace = config[:namespace]
|
||||||
|
if namespace.present?
|
||||||
Redis::Namespace.new(namespace, redis: raw_connection)
|
Redis::Namespace.new(namespace, redis: raw_connection)
|
||||||
else
|
else
|
||||||
raw_connection
|
raw_connection
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def namespace?
|
|
||||||
namespace.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def namespace
|
|
||||||
ENV.fetch('REDIS_NAMESPACE', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
def url
|
|
||||||
ENV['REDIS_URL']
|
|
||||||
end
|
|
||||||
|
|
||||||
def redis_driver
|
|
||||||
ENV.fetch('REDIS_DRIVER', 'hiredis') == 'ruby' ? :ruby : :hiredis
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def raw_connection
|
def raw_connection
|
||||||
Redis.new(url: url, driver: redis_driver)
|
Redis.new(**config)
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
module Redisable
|
module Redisable
|
||||||
def redis
|
def redis
|
||||||
Thread.current[:redis] ||= RedisConfiguration.pool.checkout
|
Thread.current[:redis] ||= RedisConnection.pool.checkout
|
||||||
end
|
end
|
||||||
|
|
||||||
def with_redis(&block)
|
def with_redis(&block)
|
||||||
RedisConfiguration.with(&block)
|
RedisConnection.with(&block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,38 +1,49 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class NotificationGroup < ActiveModelSerializers::Model
|
class NotificationGroup < ActiveModelSerializers::Model
|
||||||
attributes :group_key, :sample_accounts, :notifications_count, :notification, :most_recent_notification_id
|
attributes :group_key, :sample_accounts, :notifications_count, :notification, :most_recent_notification_id, :pagination_data
|
||||||
|
|
||||||
# Try to keep this consistent with `app/javascript/mastodon/models/notification_group.ts`
|
# Try to keep this consistent with `app/javascript/mastodon/models/notification_group.ts`
|
||||||
SAMPLE_ACCOUNTS_SIZE = 8
|
SAMPLE_ACCOUNTS_SIZE = 8
|
||||||
|
|
||||||
def self.from_notification(notification, max_id: nil, grouped_types: nil)
|
def self.from_notifications(notifications, pagination_range: nil, grouped_types: nil)
|
||||||
|
return [] if notifications.empty?
|
||||||
|
|
||||||
grouped_types = grouped_types.presence&.map(&:to_sym) || Notification::GROUPABLE_NOTIFICATION_TYPES
|
grouped_types = grouped_types.presence&.map(&:to_sym) || Notification::GROUPABLE_NOTIFICATION_TYPES
|
||||||
groupable = notification.group_key.present? && grouped_types.include?(notification.type)
|
|
||||||
|
|
||||||
if groupable
|
grouped_notifications = notifications.filter { |notification| notification.group_key.present? && grouped_types.include?(notification.type) }
|
||||||
# TODO: caching, and, if caching, preloading
|
group_keys = grouped_notifications.pluck(:group_key)
|
||||||
scope = notification.account.notifications.where(group_key: notification.group_key)
|
|
||||||
scope = scope.where(id: ..max_id) if max_id.present?
|
|
||||||
|
|
||||||
# Ideally, we would not load accounts for each notification group
|
groups_data = load_groups_data(notifications.first.account_id, group_keys, pagination_range: pagination_range)
|
||||||
most_recent_notifications = scope.order(id: :desc).includes(:from_account).take(SAMPLE_ACCOUNTS_SIZE)
|
accounts_map = Account.where(id: groups_data.values.pluck(1).flatten).index_by(&:id)
|
||||||
most_recent_id = most_recent_notifications.first.id
|
|
||||||
sample_accounts = most_recent_notifications.map(&:from_account)
|
notifications.map do |notification|
|
||||||
notifications_count = scope.count
|
if notification.group_key.present? && grouped_types.include?(notification.type)
|
||||||
else
|
most_recent_notification_id, sample_account_ids, count, *raw_pagination_data = groups_data[notification.group_key]
|
||||||
most_recent_id = notification.id
|
|
||||||
sample_accounts = [notification.from_account]
|
pagination_data = raw_pagination_data.empty? ? nil : { min_id: raw_pagination_data[0], latest_notification_at: raw_pagination_data[1] }
|
||||||
notifications_count = 1
|
|
||||||
|
NotificationGroup.new(
|
||||||
|
notification: notification,
|
||||||
|
group_key: notification.group_key,
|
||||||
|
sample_accounts: sample_account_ids.map { |id| accounts_map[id] },
|
||||||
|
notifications_count: count,
|
||||||
|
most_recent_notification_id: most_recent_notification_id,
|
||||||
|
pagination_data: pagination_data
|
||||||
|
)
|
||||||
|
else
|
||||||
|
pagination_data = pagination_range.blank? ? nil : { min_id: notification.id, latest_notification_at: notification.created_at }
|
||||||
|
|
||||||
|
NotificationGroup.new(
|
||||||
|
notification: notification,
|
||||||
|
group_key: "ungrouped-#{notification.id}",
|
||||||
|
sample_accounts: [notification.from_account],
|
||||||
|
notifications_count: 1,
|
||||||
|
most_recent_notification_id: notification.id,
|
||||||
|
pagination_data: pagination_data
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
NotificationGroup.new(
|
|
||||||
notification: notification,
|
|
||||||
group_key: groupable ? notification.group_key : "ungrouped-#{notification.id}",
|
|
||||||
sample_accounts: sample_accounts,
|
|
||||||
notifications_count: notifications_count,
|
|
||||||
most_recent_notification_id: most_recent_id
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
delegate :type,
|
delegate :type,
|
||||||
|
@ -41,4 +52,50 @@ class NotificationGroup < ActiveModelSerializers::Model
|
||||||
:account_relationship_severance_event,
|
:account_relationship_severance_event,
|
||||||
:account_warning,
|
:account_warning,
|
||||||
to: :notification, prefix: false
|
to: :notification, prefix: false
|
||||||
|
|
||||||
|
class << self
|
||||||
|
private
|
||||||
|
|
||||||
|
def load_groups_data(account_id, group_keys, pagination_range: nil)
|
||||||
|
return {} if group_keys.empty?
|
||||||
|
|
||||||
|
if pagination_range.present?
|
||||||
|
binds = [
|
||||||
|
account_id,
|
||||||
|
SAMPLE_ACCOUNTS_SIZE,
|
||||||
|
pagination_range.begin,
|
||||||
|
pagination_range.end,
|
||||||
|
ActiveRecord::Relation::QueryAttribute.new('group_keys', group_keys, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array.new(ActiveModel::Type::String.new)),
|
||||||
|
]
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection.select_all(<<~SQL.squish, 'grouped_notifications', binds).cast_values.to_h { |k, *values| [k, values] }
|
||||||
|
SELECT
|
||||||
|
groups.group_key,
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT 1),
|
||||||
|
array(SELECT from_account_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT $2),
|
||||||
|
(SELECT count(*) FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4) AS notifications_count,
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id >= $3 ORDER BY id ASC LIMIT 1) AS min_id,
|
||||||
|
(SELECT created_at FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT 1)
|
||||||
|
FROM
|
||||||
|
unnest($5::text[]) AS groups(group_key);
|
||||||
|
SQL
|
||||||
|
else
|
||||||
|
binds = [
|
||||||
|
account_id,
|
||||||
|
SAMPLE_ACCOUNTS_SIZE,
|
||||||
|
ActiveRecord::Relation::QueryAttribute.new('group_keys', group_keys, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array.new(ActiveModel::Type::String.new)),
|
||||||
|
]
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection.select_all(<<~SQL.squish, 'grouped_notifications', binds).cast_values.to_h { |k, *values| [k, values] }
|
||||||
|
SELECT
|
||||||
|
groups.group_key,
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key ORDER BY id DESC LIMIT 1),
|
||||||
|
array(SELECT from_account_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key ORDER BY id DESC LIMIT $2),
|
||||||
|
(SELECT count(*) FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key) AS notifications_count
|
||||||
|
FROM
|
||||||
|
unnest($3::text[]) AS groups(group_key);
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -39,21 +39,18 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_min_id
|
def page_min_id
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.pagination_data[:min_id].to_s
|
||||||
range.present? ? range[:min_id].to_s : object.notification.id.to_s
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_max_id
|
def page_max_id
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.most_recent_notification_id.to_s
|
||||||
range.present? ? range[:max_id].to_s : object.notification.id.to_s
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def latest_page_notification_at
|
def latest_page_notification_at
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.pagination_data[:latest_notification_at]
|
||||||
range.present? ? range[:latest_notification_at] : object.notification.created_at
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def paginated?
|
def paginated?
|
||||||
!instance_options[:group_metadata].nil?
|
object.pagination_data.present?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -150,6 +150,9 @@ class PostStatusService < BaseService
|
||||||
|
|
||||||
@media = @account.media_attachments.where(status_id: nil).where(id: @options[:media_ids].take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:to_i))
|
@media = @account.media_attachments.where(status_id: nil).where(id: @options[:media_ids].take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:to_i))
|
||||||
|
|
||||||
|
not_found_ids = @options[:media_ids] - @media.map(&:id)
|
||||||
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_found', ids: not_found_ids.join(', ')) if not_found_ids.any?
|
||||||
|
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:audio_or_video?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:audio_or_video?)
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if @media.any?(&:not_processed?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if @media.any?(&:not_processed?)
|
||||||
end
|
end
|
||||||
|
|
|
@ -74,6 +74,9 @@ class UpdateStatusService < BaseService
|
||||||
|
|
||||||
media_attachments = @status.account.media_attachments.where(status_id: [nil, @status.id]).where(scheduled_status_id: nil).where(id: @options[:media_ids].take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:to_i)).to_a
|
media_attachments = @status.account.media_attachments.where(status_id: [nil, @status.id]).where(scheduled_status_id: nil).where(id: @options[:media_ids].take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:to_i)).to_a
|
||||||
|
|
||||||
|
not_found_ids = @options[:media_ids] - media_attachments.map(&:id)
|
||||||
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_found', ids: not_found_ids.join(', ')) if not_found_ids.any?
|
||||||
|
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media_attachments.size > 1 && media_attachments.find(&:audio_or_video?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media_attachments.size > 1 && media_attachments.find(&:audio_or_video?)
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if media_attachments.any?(&:not_processed?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if media_attachments.any?(&:not_processed?)
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,8 @@ module Mastodon
|
||||||
end
|
end
|
||||||
|
|
||||||
config.before_configuration do
|
config.before_configuration do
|
||||||
require 'mastodon/redis_config'
|
require 'mastodon/redis_configuration'
|
||||||
|
::REDIS_CONFIGURATION = Mastodon::RedisConfiguration.new
|
||||||
|
|
||||||
config.x.use_vips = ENV['MASTODON_USE_LIBVIPS'] == 'true'
|
config.x.use_vips = ENV['MASTODON_USE_LIBVIPS'] == 'true'
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Rails.application.configure do
|
||||||
config.action_controller.perform_caching = true
|
config.action_controller.perform_caching = true
|
||||||
config.action_controller.enable_fragment_cache_logging = true
|
config.action_controller.enable_fragment_cache_logging = true
|
||||||
|
|
||||||
config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
|
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
'Cache-Control' => "public, max-age=#{2.days.to_i}",
|
'Cache-Control' => "public, max-age=#{2.days.to_i}",
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ Rails.application.configure do
|
||||||
config.log_tags = [:request_id]
|
config.log_tags = [:request_id]
|
||||||
|
|
||||||
# Use a different cache store in production.
|
# Use a different cache store in production.
|
||||||
config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
|
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
|
||||||
|
|
||||||
# Use a real queuing backend for Active Job (and separate queues per environment).
|
# Use a real queuing backend for Active Job (and separate queues per environment).
|
||||||
# config.active_job.queue_adapter = :resque
|
# config.active_job.queue_adapter = :resque
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
require_relative '../../lib/mastodon/sidekiq_middleware'
|
require_relative '../../lib/mastodon/sidekiq_middleware'
|
||||||
|
|
||||||
Sidekiq.configure_server do |config|
|
Sidekiq.configure_server do |config|
|
||||||
config.redis = REDIS_SIDEKIQ_PARAMS
|
config.redis = REDIS_CONFIGURATION.sidekiq
|
||||||
|
|
||||||
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
|
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
|
||||||
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
|
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
|
||||||
|
@ -51,7 +51,7 @@ Sidekiq.configure_server do |config|
|
||||||
end
|
end
|
||||||
|
|
||||||
Sidekiq.configure_client do |config|
|
Sidekiq.configure_client do |config|
|
||||||
config.redis = REDIS_SIDEKIQ_PARAMS
|
config.redis = REDIS_CONFIGURATION.sidekiq
|
||||||
|
|
||||||
config.client_middleware do |chain|
|
config.client_middleware do |chain|
|
||||||
chain.add SidekiqUniqueJobs::Middleware::Client
|
chain.add SidekiqUniqueJobs::Middleware::Client
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
require 'stoplight'
|
require 'stoplight'
|
||||||
|
|
||||||
Rails.application.reloader.to_prepare do
|
Rails.application.reloader.to_prepare do
|
||||||
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection)
|
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConnection.new.connection)
|
||||||
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
||||||
end
|
end
|
||||||
|
|
|
@ -83,6 +83,7 @@ et:
|
||||||
access_denied: Ressursi omanik või autoriseerimisserver lükkas taotluse tagasi.
|
access_denied: Ressursi omanik või autoriseerimisserver lükkas taotluse tagasi.
|
||||||
credential_flow_not_configured: Resource Owner Password Credentials vool ebaõnnestus, kuna Doorkeeper.configure.resource_owner_from_credentials ei ole seadistatud.
|
credential_flow_not_configured: Resource Owner Password Credentials vool ebaõnnestus, kuna Doorkeeper.configure.resource_owner_from_credentials ei ole seadistatud.
|
||||||
invalid_client: Kliendi autentimine ebaõnnestus. Põhjus kas tundmatu klient, puudulik autentimine või toetamata autentimismeetod.
|
invalid_client: Kliendi autentimine ebaõnnestus. Põhjus kas tundmatu klient, puudulik autentimine või toetamata autentimismeetod.
|
||||||
|
invalid_code_challenge_method: Code challenge meetod peab olema S256,, plain ei ole toetatud.
|
||||||
invalid_grant: Antud autoriseerimisluba on vale, aegunud, tagasi võetud, ei kattu kasutatud ümbersuunamise URLid või oli antud teisele kliendile.
|
invalid_grant: Antud autoriseerimisluba on vale, aegunud, tagasi võetud, ei kattu kasutatud ümbersuunamise URLid või oli antud teisele kliendile.
|
||||||
invalid_redirect_uri: Antud ümbersuunamise URL ei ole õige.
|
invalid_redirect_uri: Antud ümbersuunamise URL ei ole õige.
|
||||||
invalid_request:
|
invalid_request:
|
||||||
|
|
|
@ -83,6 +83,7 @@ ja:
|
||||||
access_denied: リソースの所有者または認証サーバーが要求を拒否しました。
|
access_denied: リソースの所有者または認証サーバーが要求を拒否しました。
|
||||||
credential_flow_not_configured: リソース所有者のパスワード Doorkeeper.configure.resource_owner_from_credentials が設定されていないためクレデンシャルフローに失敗しました。
|
credential_flow_not_configured: リソース所有者のパスワード Doorkeeper.configure.resource_owner_from_credentials が設定されていないためクレデンシャルフローに失敗しました。
|
||||||
invalid_client: 不明なクライアントであるか、クライアント情報が含まれていない、またはサポートされていない認証方法のため、クライアントの認証に失敗しました。
|
invalid_client: 不明なクライアントであるか、クライアント情報が含まれていない、またはサポートされていない認証方法のため、クライアントの認証に失敗しました。
|
||||||
|
invalid_code_challenge_method: code challenge methodはS256のみが利用可能です。plainはサポートされていません。
|
||||||
invalid_grant: 指定された認証許可は無効であるか、期限切れ、取り消されている、リダイレクトURIの不一致、または別のクライアントに発行されています。
|
invalid_grant: 指定された認証許可は無効であるか、期限切れ、取り消されている、リダイレクトURIの不一致、または別のクライアントに発行されています。
|
||||||
invalid_redirect_uri: 無効なリダイレクトURIが含まれています。
|
invalid_redirect_uri: 無効なリダイレクトURIが含まれています。
|
||||||
invalid_request:
|
invalid_request:
|
||||||
|
|
|
@ -31,6 +31,7 @@ en-GB:
|
||||||
created_msg: Moderation note successfully created!
|
created_msg: Moderation note successfully created!
|
||||||
destroyed_msg: Moderation note successfully destroyed!
|
destroyed_msg: Moderation note successfully destroyed!
|
||||||
accounts:
|
accounts:
|
||||||
|
add_email_domain_block: Block email domain
|
||||||
approve: Approve
|
approve: Approve
|
||||||
approved_msg: Successfully approved %{username}'s sign-up application
|
approved_msg: Successfully approved %{username}'s sign-up application
|
||||||
are_you_sure: Are you sure?
|
are_you_sure: Are you sure?
|
||||||
|
@ -57,6 +58,7 @@ en-GB:
|
||||||
demote: Demote
|
demote: Demote
|
||||||
destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
|
destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
|
||||||
disable: Freeze
|
disable: Freeze
|
||||||
|
disable_sign_in_token_auth: Disable email token authentication
|
||||||
disable_two_factor_authentication: Disable 2FA
|
disable_two_factor_authentication: Disable 2FA
|
||||||
disabled: Frozen
|
disabled: Frozen
|
||||||
display_name: Display name
|
display_name: Display name
|
||||||
|
@ -65,6 +67,7 @@ en-GB:
|
||||||
email: Email
|
email: Email
|
||||||
email_status: Email status
|
email_status: Email status
|
||||||
enable: Unfreeze
|
enable: Unfreeze
|
||||||
|
enable_sign_in_token_auth: Enable email token authentication
|
||||||
enabled: Enabled
|
enabled: Enabled
|
||||||
enabled_msg: Successfully unfroze %{username}'s account
|
enabled_msg: Successfully unfroze %{username}'s account
|
||||||
followers: Followers
|
followers: Followers
|
||||||
|
@ -129,6 +132,7 @@ en-GB:
|
||||||
resubscribe: Resubscribe
|
resubscribe: Resubscribe
|
||||||
role: Role
|
role: Role
|
||||||
search: Search
|
search: Search
|
||||||
|
search_same_email_domain: Other users with the same email domain
|
||||||
search_same_ip: Other users with the same IP
|
search_same_ip: Other users with the same IP
|
||||||
security: Security
|
security: Security
|
||||||
security_measures:
|
security_measures:
|
||||||
|
@ -169,10 +173,12 @@ en-GB:
|
||||||
approve_appeal: Approve Appeal
|
approve_appeal: Approve Appeal
|
||||||
approve_user: Approve User
|
approve_user: Approve User
|
||||||
assigned_to_self_report: Assign Report
|
assigned_to_self_report: Assign Report
|
||||||
|
change_email_user: Change Email for User
|
||||||
change_role_user: Change Role of User
|
change_role_user: Change Role of User
|
||||||
confirm_user: Confirm User
|
confirm_user: Confirm User
|
||||||
create_account_warning: Create Warning
|
create_account_warning: Create Warning
|
||||||
create_announcement: Create Announcement
|
create_announcement: Create Announcement
|
||||||
|
create_canonical_email_block: Create Email Block
|
||||||
create_custom_emoji: Create Custom Emoji
|
create_custom_emoji: Create Custom Emoji
|
||||||
create_domain_allow: Create Domain Allow
|
create_domain_allow: Create Domain Allow
|
||||||
create_domain_block: Create Domain Block
|
create_domain_block: Create Domain Block
|
||||||
|
@ -1081,6 +1087,7 @@ en-GB:
|
||||||
setup:
|
setup:
|
||||||
email_settings_hint_html: Click the link we sent you to verify %{email}. We'll wait right here.
|
email_settings_hint_html: Click the link we sent you to verify %{email}. We'll wait right here.
|
||||||
link_not_received: Didn't get a link?
|
link_not_received: Didn't get a link?
|
||||||
|
new_confirmation_instructions_sent: You will receive a new email with the confirmation link in a few minutes!
|
||||||
title: Check your inbox
|
title: Check your inbox
|
||||||
sign_in:
|
sign_in:
|
||||||
preamble_html: Log in with your <strong>%{domain}</strong> credentials. If your account is hosted on a different server, you will not be able to log in here.
|
preamble_html: Log in with your <strong>%{domain}</strong> credentials. If your account is hosted on a different server, you will not be able to log in here.
|
||||||
|
@ -1091,7 +1098,9 @@ en-GB:
|
||||||
title: Let's get you set up on %{domain}.
|
title: Let's get you set up on %{domain}.
|
||||||
status:
|
status:
|
||||||
account_status: Account status
|
account_status: Account status
|
||||||
|
confirming: Waiting for email confirmation to be completed.
|
||||||
functional: Your account is fully operational.
|
functional: Your account is fully operational.
|
||||||
|
pending: Your application is pending review by our staff. This may take some time. You will receive an email if your application is approved.
|
||||||
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
|
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
|
||||||
self_destruct: As %{domain} is closing down, you will only get limited access to your account.
|
self_destruct: As %{domain} is closing down, you will only get limited access to your account.
|
||||||
view_strikes: View past strikes against your account
|
view_strikes: View past strikes against your account
|
||||||
|
@ -1134,6 +1143,9 @@ en-GB:
|
||||||
before: 'Before proceeding, please read these notes carefully:'
|
before: 'Before proceeding, please read these notes carefully:'
|
||||||
caches: Content that has been cached by other servers may persist
|
caches: Content that has been cached by other servers may persist
|
||||||
data_removal: Your posts and other data will be permanently removed
|
data_removal: Your posts and other data will be permanently removed
|
||||||
|
email_change_html: You can <a href="%{path}">change your email address</a> without deleting your account
|
||||||
|
email_contact_html: If it still doesn't arrive, you can email <a href="mailto:%{email}">%{email}</a> for help
|
||||||
|
email_reconfirmation_html: If you are not receiving the confirmation email, you can <a href="%{path}">request it again</a>
|
||||||
irreversible: You will not be able to restore or reactivate your account
|
irreversible: You will not be able to restore or reactivate your account
|
||||||
more_details_html: For more details, see the <a href="%{terms_path}">privacy policy</a>.
|
more_details_html: For more details, see the <a href="%{terms_path}">privacy policy</a>.
|
||||||
username_available: Your username will become available again
|
username_available: Your username will become available again
|
||||||
|
@ -1366,6 +1378,7 @@ en-GB:
|
||||||
authentication_methods:
|
authentication_methods:
|
||||||
otp: two-factor authentication app
|
otp: two-factor authentication app
|
||||||
password: password
|
password: password
|
||||||
|
sign_in_token: email security code
|
||||||
webauthn: security keys
|
webauthn: security keys
|
||||||
description_html: If you see activity that you don't recognise, consider changing your password and enabling two-factor authentication.
|
description_html: If you see activity that you don't recognise, consider changing your password and enabling two-factor authentication.
|
||||||
empty: No authentication history available
|
empty: No authentication history available
|
||||||
|
@ -1376,6 +1389,16 @@ en-GB:
|
||||||
unsubscribe:
|
unsubscribe:
|
||||||
action: Yes, unsubscribe
|
action: Yes, unsubscribe
|
||||||
complete: Unsubscribed
|
complete: Unsubscribed
|
||||||
|
confirmation_html: Are you sure you want to unsubscribe from receiving %{type} for Mastodon on %{domain} to your email at %{email}? You can always re-subscribe from your <a href="%{settings_path}">email notification settings</a>.
|
||||||
|
emails:
|
||||||
|
notification_emails:
|
||||||
|
favourite: favourite notification emails
|
||||||
|
follow: follow notification emails
|
||||||
|
follow_request: follow request emails
|
||||||
|
mention: mention notification emails
|
||||||
|
reblog: boost notification emails
|
||||||
|
resubscribe_html: If you've unsubscribed by mistake, you can re-subscribe from your <a href="%{settings_path}">email notification settings</a>.
|
||||||
|
success_html: You'll no longer receive %{type} for Mastodon on %{domain} to your email at %{email}.
|
||||||
title: Unsubscribe
|
title: Unsubscribe
|
||||||
media_attachments:
|
media_attachments:
|
||||||
validations:
|
validations:
|
||||||
|
@ -1456,6 +1479,8 @@ en-GB:
|
||||||
update:
|
update:
|
||||||
subject: "%{name} edited a post"
|
subject: "%{name} edited a post"
|
||||||
notifications:
|
notifications:
|
||||||
|
administration_emails: Admin email notifications
|
||||||
|
email_events: Events for email notifications
|
||||||
email_events_hint: 'Select events that you want to receive notifications for:'
|
email_events_hint: 'Select events that you want to receive notifications for:'
|
||||||
number:
|
number:
|
||||||
human:
|
human:
|
||||||
|
@ -1614,6 +1639,7 @@ en-GB:
|
||||||
import: Import
|
import: Import
|
||||||
import_and_export: Import and export
|
import_and_export: Import and export
|
||||||
migrate: Account migration
|
migrate: Account migration
|
||||||
|
notifications: Email notifications
|
||||||
preferences: Preferences
|
preferences: Preferences
|
||||||
profile: Profile
|
profile: Profile
|
||||||
relationships: Follows and followers
|
relationships: Follows and followers
|
||||||
|
@ -1860,6 +1886,7 @@ en-GB:
|
||||||
invalid_otp_token: Invalid two-factor code
|
invalid_otp_token: Invalid two-factor code
|
||||||
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
|
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
|
||||||
rate_limited: Too many authentication attempts, try again later.
|
rate_limited: Too many authentication attempts, try again later.
|
||||||
|
seamless_external_login: You are logged in via an external service, so password and email settings are not available.
|
||||||
signed_in_as: 'Logged in as:'
|
signed_in_as: 'Logged in as:'
|
||||||
verification:
|
verification:
|
||||||
extra_instructions_html: <strong>Tip:</strong> The link on your website can be invisible. The important part is <code>rel="me"</code> which prevents impersonation on websites with user-generated content. You can even use a <code>link</code> tag in the header of the page instead of <code>a</code>, but the HTML must be accessible without executing JavaScript.
|
extra_instructions_html: <strong>Tip:</strong> The link on your website can be invisible. The important part is <code>rel="me"</code> which prevents impersonation on websites with user-generated content. You can even use a <code>link</code> tag in the header of the page instead of <code>a</code>, but the HTML must be accessible without executing JavaScript.
|
||||||
|
|
|
@ -1454,6 +1454,7 @@ en:
|
||||||
media_attachments:
|
media_attachments:
|
||||||
validations:
|
validations:
|
||||||
images_and_video: Cannot attach a video to a post that already contains images
|
images_and_video: Cannot attach a video to a post that already contains images
|
||||||
|
not_found: Media %{ids} not found or already attached to another post
|
||||||
not_ready: Cannot attach files that have not finished processing. Try again in a moment!
|
not_ready: Cannot attach files that have not finished processing. Try again in a moment!
|
||||||
too_many: Cannot attach more than 4 files
|
too_many: Cannot attach more than 4 files
|
||||||
migrations:
|
migrations:
|
||||||
|
|
|
@ -215,6 +215,7 @@ et:
|
||||||
update_custom_emoji: Uuendas kohandatud emotikoni
|
update_custom_emoji: Uuendas kohandatud emotikoni
|
||||||
update_domain_block: Uuenda domeenipiirangut
|
update_domain_block: Uuenda domeenipiirangut
|
||||||
update_ip_block: IP-reegli uuendamine
|
update_ip_block: IP-reegli uuendamine
|
||||||
|
update_report: Uuendamise raport
|
||||||
update_status: Uuenda postitust
|
update_status: Uuenda postitust
|
||||||
update_user_role: Uuenda rolli
|
update_user_role: Uuenda rolli
|
||||||
actions:
|
actions:
|
||||||
|
@ -445,6 +446,9 @@ et:
|
||||||
title: Jälgimissoovitused
|
title: Jälgimissoovitused
|
||||||
unsuppress: Taasta jälgimissoovitused
|
unsuppress: Taasta jälgimissoovitused
|
||||||
instances:
|
instances:
|
||||||
|
audit_log:
|
||||||
|
title: Viimatised auditi logid
|
||||||
|
view_all: Vaata täielikke auditi logisid
|
||||||
availability:
|
availability:
|
||||||
description_html:
|
description_html:
|
||||||
one: Kui domeenile edastamine nurjub <strong>%{count} päeval</strong>, siis ei tehta enam edastamiskatseid, välja arvatud juhul, kui domeenilt <em>võetakse vastu</em> saadetis.
|
one: Kui domeenile edastamine nurjub <strong>%{count} päeval</strong>, siis ei tehta enam edastamiskatseid, välja arvatud juhul, kui domeenilt <em>võetakse vastu</em> saadetis.
|
||||||
|
@ -612,6 +616,7 @@ et:
|
||||||
report: 'Teavitus #%{id}'
|
report: 'Teavitus #%{id}'
|
||||||
reported_account: Teavitatud kontost
|
reported_account: Teavitatud kontost
|
||||||
reported_by: Teavitaja
|
reported_by: Teavitaja
|
||||||
|
reported_with_application: Raporteeritud rakendusega
|
||||||
resolved: Lahendatud
|
resolved: Lahendatud
|
||||||
resolved_msg: Teavituse lahendamine õnnestus!
|
resolved_msg: Teavituse lahendamine õnnestus!
|
||||||
skip_to_actions: Otsuste juurde
|
skip_to_actions: Otsuste juurde
|
||||||
|
@ -850,7 +855,24 @@ et:
|
||||||
action: Klõpsa lisainfo saamiseks siia
|
action: Klõpsa lisainfo saamiseks siia
|
||||||
message_html: "<strong>Objektihoidla on valesti seadistatud. Kasutajate privaatsus on ohustatud.</strong>"
|
message_html: "<strong>Objektihoidla on valesti seadistatud. Kasutajate privaatsus on ohustatud.</strong>"
|
||||||
tags:
|
tags:
|
||||||
|
moderation:
|
||||||
|
not_trendable: Pole trendis
|
||||||
|
not_usable: Pole kasutatav
|
||||||
|
pending_review: Ootab läbivaatust
|
||||||
|
review_requested: Taodeldud läbivaatust
|
||||||
|
reviewed: Läbivaadatud
|
||||||
|
title: Olek
|
||||||
|
trendable: Trendil
|
||||||
|
unreviewed: Läbivaatamata
|
||||||
|
usable: Kasutatav
|
||||||
|
name: Nimi
|
||||||
|
newest: Uusim
|
||||||
|
oldest: Vanim
|
||||||
|
open: Vaata avalikult
|
||||||
|
reset: Lähtesta
|
||||||
review: Vaata olek üle
|
review: Vaata olek üle
|
||||||
|
search: Otsi
|
||||||
|
title: Märksõnad
|
||||||
updated_msg: Sildi sätted edukalt uuendatud
|
updated_msg: Sildi sätted edukalt uuendatud
|
||||||
title: Administreerimine
|
title: Administreerimine
|
||||||
trends:
|
trends:
|
||||||
|
|
|
@ -431,7 +431,7 @@ fr:
|
||||||
no_file: Aucun fichier sélectionné
|
no_file: Aucun fichier sélectionné
|
||||||
export_domain_blocks:
|
export_domain_blocks:
|
||||||
import:
|
import:
|
||||||
description_html: Vous êtes sur le point d'importer une liste de bloqueurs de domaine. Veuillez examiner cette liste très attentivement, surtout si vous ne l'avez pas créée vous-même.
|
description_html: Vous êtes sur le point d'importer une liste de blocage de domaines. Veuillez examiner cette liste très attentivement, surtout si vous ne l'avez pas créée vous-même.
|
||||||
existing_relationships_warning: Relations d'abonnement existantes
|
existing_relationships_warning: Relations d'abonnement existantes
|
||||||
private_comment_description_html: 'Pour vous aider à savoir d''où proviennent les blocages importés, ceux-ci seront créés avec le commentaire privé suivant : <q>%{comment}</q>'
|
private_comment_description_html: 'Pour vous aider à savoir d''où proviennent les blocages importés, ceux-ci seront créés avec le commentaire privé suivant : <q>%{comment}</q>'
|
||||||
private_comment_template: Importé depuis %{source} le %{date}
|
private_comment_template: Importé depuis %{source} le %{date}
|
||||||
|
|
|
@ -31,6 +31,7 @@ ia:
|
||||||
created_msg: Nota de moderation create con successo!
|
created_msg: Nota de moderation create con successo!
|
||||||
destroyed_msg: Nota de moderation destruite con successo!
|
destroyed_msg: Nota de moderation destruite con successo!
|
||||||
accounts:
|
accounts:
|
||||||
|
add_email_domain_block: Blocar dominio de e-mail
|
||||||
approve: Approbar
|
approve: Approbar
|
||||||
approved_msg: Demanda de inscription de %{username} approbate con successo
|
approved_msg: Demanda de inscription de %{username} approbate con successo
|
||||||
are_you_sure: Es tu secur?
|
are_you_sure: Es tu secur?
|
||||||
|
@ -57,6 +58,7 @@ ia:
|
||||||
demote: Degradar
|
demote: Degradar
|
||||||
destroyed_msg: Le datos de %{username} es ora in cauda pro lor imminente deletion
|
destroyed_msg: Le datos de %{username} es ora in cauda pro lor imminente deletion
|
||||||
disable: Gelar
|
disable: Gelar
|
||||||
|
disable_sign_in_token_auth: Disactivar le authentication per token in e-mail
|
||||||
disable_two_factor_authentication: Disactivar A2F
|
disable_two_factor_authentication: Disactivar A2F
|
||||||
disabled: Gelate
|
disabled: Gelate
|
||||||
display_name: Nomine a monstrar
|
display_name: Nomine a monstrar
|
||||||
|
@ -65,6 +67,7 @@ ia:
|
||||||
email: E-mail
|
email: E-mail
|
||||||
email_status: Stato de e-mail
|
email_status: Stato de e-mail
|
||||||
enable: Disgelar
|
enable: Disgelar
|
||||||
|
enable_sign_in_token_auth: Activar le authentication per token in e-mail
|
||||||
enabled: Activate
|
enabled: Activate
|
||||||
enabled_msg: Conto de %{username} disgelate con successo
|
enabled_msg: Conto de %{username} disgelate con successo
|
||||||
followers: Sequitores
|
followers: Sequitores
|
||||||
|
@ -129,6 +132,7 @@ ia:
|
||||||
resubscribe: Resubscriber
|
resubscribe: Resubscriber
|
||||||
role: Rolo
|
role: Rolo
|
||||||
search: Cercar
|
search: Cercar
|
||||||
|
search_same_email_domain: Altere usatores con le mesme dominio de e-mail
|
||||||
search_same_ip: Altere usatores con le mesme IP
|
search_same_ip: Altere usatores con le mesme IP
|
||||||
security: Securitate
|
security: Securitate
|
||||||
security_measures:
|
security_measures:
|
||||||
|
@ -169,21 +173,26 @@ ia:
|
||||||
approve_appeal: Approbar appello
|
approve_appeal: Approbar appello
|
||||||
approve_user: Approbar usator
|
approve_user: Approbar usator
|
||||||
assigned_to_self_report: Assignar reporto
|
assigned_to_self_report: Assignar reporto
|
||||||
|
change_email_user: Cambiar e-mail pro le usator
|
||||||
change_role_user: Cambiar le rolo del usator
|
change_role_user: Cambiar le rolo del usator
|
||||||
confirm_user: Confirmar le usator
|
confirm_user: Confirmar le usator
|
||||||
create_account_warning: Crear un advertimento
|
create_account_warning: Crear un advertimento
|
||||||
create_announcement: Crear annuncio
|
create_announcement: Crear annuncio
|
||||||
|
create_canonical_email_block: Crear blocada de e-mail
|
||||||
create_custom_emoji: Crear emoji personalisate
|
create_custom_emoji: Crear emoji personalisate
|
||||||
create_domain_allow: Crear permisso de dominio
|
create_domain_allow: Crear permisso de dominio
|
||||||
create_domain_block: Crear blocada de dominio
|
create_domain_block: Crear blocada de dominio
|
||||||
|
create_email_domain_block: Crear blocada de dominio de e-mail
|
||||||
create_ip_block: Crear un regula IP
|
create_ip_block: Crear un regula IP
|
||||||
create_unavailable_domain: Crear dominio indisponibile
|
create_unavailable_domain: Crear dominio indisponibile
|
||||||
create_user_role: Crear un rolo
|
create_user_role: Crear un rolo
|
||||||
demote_user: Degradar usator
|
demote_user: Degradar usator
|
||||||
destroy_announcement: Deler annuncio
|
destroy_announcement: Deler annuncio
|
||||||
|
destroy_canonical_email_block: Deler blocada de e-mail
|
||||||
destroy_custom_emoji: Deler emoji personalisate
|
destroy_custom_emoji: Deler emoji personalisate
|
||||||
destroy_domain_allow: Deler permisso de dominio
|
destroy_domain_allow: Deler permisso de dominio
|
||||||
destroy_domain_block: Deler blocada de dominio
|
destroy_domain_block: Deler blocada de dominio
|
||||||
|
destroy_email_domain_block: Deler blocada de dominio de e-mail
|
||||||
destroy_instance: Purgar dominio
|
destroy_instance: Purgar dominio
|
||||||
destroy_ip_block: Deler le regula IP
|
destroy_ip_block: Deler le regula IP
|
||||||
destroy_status: Deler message
|
destroy_status: Deler message
|
||||||
|
@ -191,8 +200,10 @@ ia:
|
||||||
destroy_user_role: Destruer rolo
|
destroy_user_role: Destruer rolo
|
||||||
disable_2fa_user: Disactivar A2F
|
disable_2fa_user: Disactivar A2F
|
||||||
disable_custom_emoji: Disactivar emoji personalisate
|
disable_custom_emoji: Disactivar emoji personalisate
|
||||||
|
disable_sign_in_token_auth_user: Disactivar le authentication per token de e-mail pro le usator
|
||||||
disable_user: Disactivar le usator
|
disable_user: Disactivar le usator
|
||||||
enable_custom_emoji: Activar emoji personalisate
|
enable_custom_emoji: Activar emoji personalisate
|
||||||
|
enable_sign_in_token_auth_user: Activar le authentication per token de e-mail pro le usator
|
||||||
enable_user: Activar le usator
|
enable_user: Activar le usator
|
||||||
memorialize_account: Converter conto in memorial
|
memorialize_account: Converter conto in memorial
|
||||||
promote_user: Promover usator
|
promote_user: Promover usator
|
||||||
|
@ -222,20 +233,26 @@ ia:
|
||||||
approve_appeal_html: "%{name} approbava appello del decision de moderation de %{target}"
|
approve_appeal_html: "%{name} approbava appello del decision de moderation de %{target}"
|
||||||
approve_user_html: "%{name} approbava inscription de %{target}"
|
approve_user_html: "%{name} approbava inscription de %{target}"
|
||||||
assigned_to_self_report_html: "%{name} assignava reporto %{target} a se mesme"
|
assigned_to_self_report_html: "%{name} assignava reporto %{target} a se mesme"
|
||||||
|
change_email_user_html: "%{name} cambiava le adresse de e-mail address del usator %{target}"
|
||||||
change_role_user_html: "%{name} cambiava rolo de %{target}"
|
change_role_user_html: "%{name} cambiava rolo de %{target}"
|
||||||
|
confirm_user_html: "%{name} confirmava le adresse de e-mail del. usator %{target}"
|
||||||
create_account_warning_html: "%{name} inviava un advertimento a %{target}"
|
create_account_warning_html: "%{name} inviava un advertimento a %{target}"
|
||||||
create_announcement_html: "%{name} creava un nove annuncio %{target}"
|
create_announcement_html: "%{name} creava un nove annuncio %{target}"
|
||||||
|
create_canonical_email_block_html: "%{name} blocava le e-mail con le hash %{target}"
|
||||||
create_custom_emoji_html: "%{name} incargava le nove emoji %{target}"
|
create_custom_emoji_html: "%{name} incargava le nove emoji %{target}"
|
||||||
create_domain_allow_html: "%{name} permitteva federation con dominio %{target}"
|
create_domain_allow_html: "%{name} permitteva federation con dominio %{target}"
|
||||||
create_domain_block_html: "%{name} blocava dominio %{target}"
|
create_domain_block_html: "%{name} blocava dominio %{target}"
|
||||||
|
create_email_domain_block_html: "%{name} blocava le dominio de e-mail %{target}"
|
||||||
create_ip_block_html: "%{name} creava regula pro IP %{target}"
|
create_ip_block_html: "%{name} creava regula pro IP %{target}"
|
||||||
create_unavailable_domain_html: "%{name} stoppava livration al dominio %{target}"
|
create_unavailable_domain_html: "%{name} stoppava livration al dominio %{target}"
|
||||||
create_user_role_html: "%{name} creava rolo de %{target}"
|
create_user_role_html: "%{name} creava rolo de %{target}"
|
||||||
demote_user_html: "%{name} degradava usator %{target}"
|
demote_user_html: "%{name} degradava usator %{target}"
|
||||||
destroy_announcement_html: "%{name} deleva annuncio %{target}"
|
destroy_announcement_html: "%{name} deleva annuncio %{target}"
|
||||||
|
destroy_canonical_email_block_html: "%{name} disblocava le e-mail con le hash %{target}"
|
||||||
destroy_custom_emoji_html: "%{name} deleva emoji %{target}"
|
destroy_custom_emoji_html: "%{name} deleva emoji %{target}"
|
||||||
destroy_domain_allow_html: "%{name} impediva le federation con dominio %{target}"
|
destroy_domain_allow_html: "%{name} impediva le federation con dominio %{target}"
|
||||||
destroy_domain_block_html: "%{name} disblocava dominio %{target}"
|
destroy_domain_block_html: "%{name} disblocava dominio %{target}"
|
||||||
|
destroy_email_domain_block_html: "%{name} disblocava le dominio de e-mail %{target}"
|
||||||
destroy_instance_html: "%{name} purgava le dominio %{target}"
|
destroy_instance_html: "%{name} purgava le dominio %{target}"
|
||||||
destroy_ip_block_html: "%{name} deleva le regula pro IP %{target}"
|
destroy_ip_block_html: "%{name} deleva le regula pro IP %{target}"
|
||||||
destroy_status_html: "%{name} removeva un message de %{target}"
|
destroy_status_html: "%{name} removeva un message de %{target}"
|
||||||
|
@ -243,8 +260,10 @@ ia:
|
||||||
destroy_user_role_html: "%{name} deleva le rolo %{target}"
|
destroy_user_role_html: "%{name} deleva le rolo %{target}"
|
||||||
disable_2fa_user_html: "%{name} disactivava le authentication a duo factores pro le usator %{target}"
|
disable_2fa_user_html: "%{name} disactivava le authentication a duo factores pro le usator %{target}"
|
||||||
disable_custom_emoji_html: "%{name} disactivava le emoji %{target}"
|
disable_custom_emoji_html: "%{name} disactivava le emoji %{target}"
|
||||||
|
disable_sign_in_token_auth_user_html: "%{name} disactivava le authentication per token de e-mail pro %{target}"
|
||||||
disable_user_html: "%{name} disactivava le apertura de session pro le usator %{target}"
|
disable_user_html: "%{name} disactivava le apertura de session pro le usator %{target}"
|
||||||
enable_custom_emoji_html: "%{name} activava le emoji %{target}"
|
enable_custom_emoji_html: "%{name} activava le emoji %{target}"
|
||||||
|
enable_sign_in_token_auth_user_html: "%{name} activava le authentication per token de e-mail pro %{target}"
|
||||||
enable_user_html: "%{name} activava le apertura de session pro le usator %{target}"
|
enable_user_html: "%{name} activava le apertura de session pro le usator %{target}"
|
||||||
memorialize_account_html: "%{name} converteva le conto de %{target} in un pagina commemorative"
|
memorialize_account_html: "%{name} converteva le conto de %{target} in un pagina commemorative"
|
||||||
promote_user_html: "%{name} promoveva le usator %{target}"
|
promote_user_html: "%{name} promoveva le usator %{target}"
|
||||||
|
@ -252,6 +271,7 @@ ia:
|
||||||
reject_user_html: "%{name} refusava le inscription de %{target}"
|
reject_user_html: "%{name} refusava le inscription de %{target}"
|
||||||
remove_avatar_user_html: "%{name} removeva le avatar de %{target}"
|
remove_avatar_user_html: "%{name} removeva le avatar de %{target}"
|
||||||
reopen_report_html: "%{name} reaperiva le reporto %{target}"
|
reopen_report_html: "%{name} reaperiva le reporto %{target}"
|
||||||
|
resend_user_html: "%{name} reinviava le e-mail de confirmation pro %{target}"
|
||||||
reset_password_user_html: "%{name} reinitialisava le contrasigno del usator %{target}"
|
reset_password_user_html: "%{name} reinitialisava le contrasigno del usator %{target}"
|
||||||
resolve_report_html: "%{name} resolveva le reporto %{target}"
|
resolve_report_html: "%{name} resolveva le reporto %{target}"
|
||||||
sensitive_account_html: "%{name} marcava le multimedia de %{target} como sensibile"
|
sensitive_account_html: "%{name} marcava le multimedia de %{target} como sensibile"
|
||||||
|
@ -412,6 +432,7 @@ ia:
|
||||||
attempts_over_week:
|
attempts_over_week:
|
||||||
one: "%{count} tentativa de inscription in le ultime septimana"
|
one: "%{count} tentativa de inscription in le ultime septimana"
|
||||||
other: "%{count} tentativas de inscription in le ultime septimana"
|
other: "%{count} tentativas de inscription in le ultime septimana"
|
||||||
|
created_msg: Le dominio de e-mail ha essite blocate con successo
|
||||||
delete: Deler
|
delete: Deler
|
||||||
dns:
|
dns:
|
||||||
types:
|
types:
|
||||||
|
@ -420,8 +441,12 @@ ia:
|
||||||
new:
|
new:
|
||||||
create: Adder un dominio
|
create: Adder un dominio
|
||||||
resolve: Resolver dominio
|
resolve: Resolver dominio
|
||||||
|
title: Blocar un nove dominio de e-mail
|
||||||
|
no_email_domain_block_selected: Necun blocadas de dominio de e-mail ha essite cambiate perque necun ha essite seligite
|
||||||
not_permitted: Non permittite
|
not_permitted: Non permittite
|
||||||
|
resolved_dns_records_hint_html: Le nomine de dominio se resolve al sequente dominios MX, le quales ha le ultime responsibilitate pro le reception de e-mail. Blocar un dominio MX blocara le inscriptiones de qualcunque adresse de e-mail que usa le mesme dominio MX, mesmo si le nomine de dominio visibile es differente. <strong>Presta attention a evitar de blocar le grande fornitores de e-mail.</strong>
|
||||||
resolved_through_html: Resolvite per %{domain}
|
resolved_through_html: Resolvite per %{domain}
|
||||||
|
title: Dominios de e-mail blocate
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Importar permissiones de dominio
|
title: Importar permissiones de dominio
|
||||||
|
@ -868,10 +893,15 @@ ia:
|
||||||
allow: Permitter
|
allow: Permitter
|
||||||
approved: Approbate
|
approved: Approbate
|
||||||
confirm_allow: Es tu secur que tu vole permitter le etiquettas seligite?
|
confirm_allow: Es tu secur que tu vole permitter le etiquettas seligite?
|
||||||
|
confirm_disallow: Es tu secur que tu vole cessar de permitter le etiquettas seligite?
|
||||||
disallow: Refusar
|
disallow: Refusar
|
||||||
links:
|
links:
|
||||||
allow: Permitter ligamine
|
allow: Permitter ligamine
|
||||||
allow_provider: Autorisar le publicator
|
allow_provider: Autorisar le publicator
|
||||||
|
confirm_allow: Es tu secur que tu vole permitter le ligamines seligite?
|
||||||
|
confirm_allow_provider: Es tu secur que tu vole permitter le fornitores seligite?
|
||||||
|
confirm_disallow: Es tu secur que tu vole cessar de permitter le ligamines seligite?
|
||||||
|
confirm_disallow_provider: Es tu secur que tu vole cessar de permitter le fornitores seligite?
|
||||||
description_html: Istes es ligamines que es actualmente compartite multo per contos del quales tu servitor recipe messages. Illos pote adjutar tu usatores a discoperir lo que eveni in le mundo. Necun ligamine es monstrate publicamente usque tu autorisa le publicator. Tu pote tamben permitter o rejectar ligamines singule.
|
description_html: Istes es ligamines que es actualmente compartite multo per contos del quales tu servitor recipe messages. Illos pote adjutar tu usatores a discoperir lo que eveni in le mundo. Necun ligamine es monstrate publicamente usque tu autorisa le publicator. Tu pote tamben permitter o rejectar ligamines singule.
|
||||||
disallow: Prohibir le ligamine
|
disallow: Prohibir le ligamine
|
||||||
disallow_provider: Prohibir le publicator
|
disallow_provider: Prohibir le publicator
|
||||||
|
@ -895,6 +925,8 @@ ia:
|
||||||
statuses:
|
statuses:
|
||||||
allow: Permitter message
|
allow: Permitter message
|
||||||
allow_account: Permitter autor
|
allow_account: Permitter autor
|
||||||
|
confirm_allow_account: Es tu secur que tu vole permitter le contos seligite?
|
||||||
|
confirm_disallow_account: Es tu secur que tu vole cessar de permitter le contos seligite?
|
||||||
description_html: Istes es le messages cognoscite sur tu servitor que al momento es multo compartite e marcate como favorite. Illos pote adjutar tu usatores nove e reveniente a trovar plus personas a sequer. Necun message es monstrate publicamente usque tu approba le autor, a condition que le autor permitte que su conto es suggerite a alteres. Tu pote tamben permitter o rejectar messages singule.
|
description_html: Istes es le messages cognoscite sur tu servitor que al momento es multo compartite e marcate como favorite. Illos pote adjutar tu usatores nove e reveniente a trovar plus personas a sequer. Necun message es monstrate publicamente usque tu approba le autor, a condition que le autor permitte que su conto es suggerite a alteres. Tu pote tamben permitter o rejectar messages singule.
|
||||||
disallow: Non permitter message
|
disallow: Non permitter message
|
||||||
disallow_account: Non permitter autor
|
disallow_account: Non permitter autor
|
||||||
|
@ -1011,7 +1043,9 @@ ia:
|
||||||
guide_link_text: Totes pote contribuer.
|
guide_link_text: Totes pote contribuer.
|
||||||
sensitive_content: Contento sensibile
|
sensitive_content: Contento sensibile
|
||||||
application_mailer:
|
application_mailer:
|
||||||
|
notification_preferences: Cambiar preferentias de e-mail
|
||||||
salutation: "%{name},"
|
salutation: "%{name},"
|
||||||
|
settings: 'Cambiar preferentias de e-mail: %{link}'
|
||||||
unsubscribe: Desubscriber
|
unsubscribe: Desubscriber
|
||||||
view: 'Visita:'
|
view: 'Visita:'
|
||||||
view_profile: Vider profilo
|
view_profile: Vider profilo
|
||||||
|
@ -1031,6 +1065,7 @@ ia:
|
||||||
hint_html: Solo un altere cosa! Nos debe confirmar que tu es un humano (de sorta que nos pote mantener le spam foras!). Solve le CAPTCHA infra e clicca sur "Continuar".
|
hint_html: Solo un altere cosa! Nos debe confirmar que tu es un humano (de sorta que nos pote mantener le spam foras!). Solve le CAPTCHA infra e clicca sur "Continuar".
|
||||||
title: Controlo de securitate
|
title: Controlo de securitate
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review: Tu adresse de e-mail es confirmate! Le personal de %{domain} ora revide tu registration. Tu recipera un e-mail si illes approba tu conto!
|
||||||
awaiting_review_title: Tu inscription es in curso de revision
|
awaiting_review_title: Tu inscription es in curso de revision
|
||||||
clicking_this_link: cliccar sur iste ligamine
|
clicking_this_link: cliccar sur iste ligamine
|
||||||
login_link: aperir session
|
login_link: aperir session
|
||||||
|
@ -1038,6 +1073,7 @@ ia:
|
||||||
redirect_to_app_html: Tu deberea haber essite redirigite al app <strong>%{app_name}</strong>. Si isto non ha evenite, tenta %{clicking_this_link} o retornar manualmente al app.
|
redirect_to_app_html: Tu deberea haber essite redirigite al app <strong>%{app_name}</strong>. Si isto non ha evenite, tenta %{clicking_this_link} o retornar manualmente al app.
|
||||||
registration_complete: Tu inscription sur %{domain} es ora concludite!
|
registration_complete: Tu inscription sur %{domain} es ora concludite!
|
||||||
welcome_title: Benvenite, %{name}!
|
welcome_title: Benvenite, %{name}!
|
||||||
|
wrong_email_hint: Si ille adresse de e-mail non es correcte, tu pote cambiar lo in le parametros del conto.
|
||||||
delete_account: Deler le conto
|
delete_account: Deler le conto
|
||||||
delete_account_html: Si tu vole deler tu conto, tu pote <a href="%{path}">facer lo hic</a>. Te essera demandate un confirmation.
|
delete_account_html: Si tu vole deler tu conto, tu pote <a href="%{path}">facer lo hic</a>. Te essera demandate un confirmation.
|
||||||
description:
|
description:
|
||||||
|
@ -1058,6 +1094,7 @@ ia:
|
||||||
or_log_in_with: O aperi session con
|
or_log_in_with: O aperi session con
|
||||||
privacy_policy_agreement_html: Io ha legite e accepta le <a href="<a href="%{privacy_policy_path}" target="_blank">politica de confidentialitate</a>
|
privacy_policy_agreement_html: Io ha legite e accepta le <a href="<a href="%{privacy_policy_path}" target="_blank">politica de confidentialitate</a>
|
||||||
progress:
|
progress:
|
||||||
|
confirm: Confirmar e-mail
|
||||||
details: Tu detalios
|
details: Tu detalios
|
||||||
review: Nostre revision
|
review: Nostre revision
|
||||||
rules: Accepta le regulas
|
rules: Accepta le regulas
|
||||||
|
@ -1079,8 +1116,10 @@ ia:
|
||||||
security: Securitate
|
security: Securitate
|
||||||
set_new_password: Definir un nove contrasigno
|
set_new_password: Definir un nove contrasigno
|
||||||
setup:
|
setup:
|
||||||
|
email_below_hint_html: Consulta tu dossier de spam, o requesta un altere ligamine de confirmation. Tu pote corriger tu adresse de e-mail si illo es errate.
|
||||||
email_settings_hint_html: Clicca sur le ligamine que nos te ha inviate pro verificar %{email}. Nos te attendera hic.
|
email_settings_hint_html: Clicca sur le ligamine que nos te ha inviate pro verificar %{email}. Nos te attendera hic.
|
||||||
link_not_received: Necun ligamine recipite?
|
link_not_received: Necun ligamine recipite?
|
||||||
|
new_confirmation_instructions_sent: Tu recipera un nove e-mail con le ligamine de confirmation in poc minutas!
|
||||||
title: Consulta tu cassa de entrata
|
title: Consulta tu cassa de entrata
|
||||||
sign_in:
|
sign_in:
|
||||||
preamble_html: Aperi session con tu credentiales de <strong>%{domain}</strong>. Si tu conto es albergate sur un altere servitor, tu non potera aperir session hic.
|
preamble_html: Aperi session con tu credentiales de <strong>%{domain}</strong>. Si tu conto es albergate sur un altere servitor, tu non potera aperir session hic.
|
||||||
|
@ -1091,7 +1130,9 @@ ia:
|
||||||
title: Lassa nos installar tu conto sur %{domain}.
|
title: Lassa nos installar tu conto sur %{domain}.
|
||||||
status:
|
status:
|
||||||
account_status: Stato del conto
|
account_status: Stato del conto
|
||||||
|
confirming: Attendente le termination del confirmation del adresse de e-mail.
|
||||||
functional: Tu conto es completemente operative.
|
functional: Tu conto es completemente operative.
|
||||||
|
pending: Tu demanda attende le revision per nostre personal. Isto pote prender alcun tempore. Tu recipera un e-mail si tu demanda es approbate.
|
||||||
redirecting_to: Tu conto es inactive perque illo actualmente redirige a %{acct}.
|
redirecting_to: Tu conto es inactive perque illo actualmente redirige a %{acct}.
|
||||||
self_destruct: Perque %{domain} va clauder, tu solo habera accesso limitate a tu conto.
|
self_destruct: Perque %{domain} va clauder, tu solo habera accesso limitate a tu conto.
|
||||||
view_strikes: Examinar le sanctiones passate contra tu conto
|
view_strikes: Examinar le sanctiones passate contra tu conto
|
||||||
|
@ -1134,6 +1175,9 @@ ia:
|
||||||
before: 'Ante de continuar, per favor lege attentemente iste notas:'
|
before: 'Ante de continuar, per favor lege attentemente iste notas:'
|
||||||
caches: Le contento que altere servitores ha immagazinate in cache pote persister
|
caches: Le contento que altere servitores ha immagazinate in cache pote persister
|
||||||
data_removal: Tu messages e altere datos essera removite permanentemente
|
data_removal: Tu messages e altere datos essera removite permanentemente
|
||||||
|
email_change_html: Tu pote <a href="%{path}">cambiar tu adresse de e-mail</a> sin deler tu conto
|
||||||
|
email_contact_html: Si illo ancora non arriva, tu pote inviar e-mail a <a href="mailto:%{email}">%{email}</a> pro peter adjuta
|
||||||
|
email_reconfirmation_html: Si tu non recipe le e-mail de confirmation, tu pote <a href="%{path}>requestar lo de novo</a>
|
||||||
irreversible: Tu non potera restaurar o reactivar tu conto
|
irreversible: Tu non potera restaurar o reactivar tu conto
|
||||||
more_details_html: Pro plus detalios, vide le <a href="%{terms_path}">politica de confidentialitate</a>.
|
more_details_html: Pro plus detalios, vide le <a href="%{terms_path}">politica de confidentialitate</a>.
|
||||||
username_available: Tu nomine de usator essera disponibile novemente
|
username_available: Tu nomine de usator essera disponibile novemente
|
||||||
|
@ -1377,6 +1421,16 @@ ia:
|
||||||
unsubscribe:
|
unsubscribe:
|
||||||
action: Si, desubscriber
|
action: Si, desubscriber
|
||||||
complete: Desubscribite
|
complete: Desubscribite
|
||||||
|
confirmation_html: Es tu secur de voler cancellar le subscription al %{type} de Mastodon sur %{domain} pro tu adresse de e-mail %{email}? Tu pote sempre resubscriber te a partir del <a href="%{settings_path}">parametros de notification in e-mail</a>.
|
||||||
|
emails:
|
||||||
|
notification_emails:
|
||||||
|
favourite: notificationes de favorites in e-mail
|
||||||
|
follow: notificationes de sequimento in e-mail
|
||||||
|
follow_request: requestas de sequimento in e-mail
|
||||||
|
mention: notificationes de mentiones in e-mail
|
||||||
|
reblog: notificationes de impulsos in e-mail
|
||||||
|
resubscribe_html: Si tu ha cancellate le subscription in error, tu pote resubscriber te a partir del <a href="%{settings_path}">parametros de notification in e-mail</a>.
|
||||||
|
success_html: Tu non recipera plus %{type} pro Mastodon sur %{domain} a tu adresse de e-mail %{email}.
|
||||||
title: Desubcriber
|
title: Desubcriber
|
||||||
media_attachments:
|
media_attachments:
|
||||||
validations:
|
validations:
|
||||||
|
@ -1457,6 +1511,8 @@ ia:
|
||||||
update:
|
update:
|
||||||
subject: "%{name} ha modificate un message"
|
subject: "%{name} ha modificate un message"
|
||||||
notifications:
|
notifications:
|
||||||
|
administration_emails: Notificationes per e-mail pro administratores
|
||||||
|
email_events: Eventos pro notificationes per e-mail
|
||||||
email_events_hint: 'Selige eventos pro le quales tu vole reciper notificationes:'
|
email_events_hint: 'Selige eventos pro le quales tu vole reciper notificationes:'
|
||||||
number:
|
number:
|
||||||
human:
|
human:
|
||||||
|
@ -1615,6 +1671,7 @@ ia:
|
||||||
import: Importar
|
import: Importar
|
||||||
import_and_export: Importar e exportar
|
import_and_export: Importar e exportar
|
||||||
migrate: Migration de conto
|
migrate: Migration de conto
|
||||||
|
notifications: Notificationes per e-mail
|
||||||
preferences: Preferentias
|
preferences: Preferentias
|
||||||
profile: Profilo public
|
profile: Profilo public
|
||||||
relationships: Sequites e sequitores
|
relationships: Sequites e sequitores
|
||||||
|
@ -1861,6 +1918,7 @@ ia:
|
||||||
invalid_otp_token: Codice de duo factores non valide
|
invalid_otp_token: Codice de duo factores non valide
|
||||||
otp_lost_help_html: Si tu ha perdite le accesso a ambes, tu pote contactar %{email}
|
otp_lost_help_html: Si tu ha perdite le accesso a ambes, tu pote contactar %{email}
|
||||||
rate_limited: Troppo de tentativas de authentication. Per favor reessaya plus tarde.
|
rate_limited: Troppo de tentativas de authentication. Per favor reessaya plus tarde.
|
||||||
|
seamless_external_login: Tu ha aperite session per medio de un servicio externe. Le parametros de contrasigno e de e-mail es dunque indisponibile.
|
||||||
signed_in_as: 'Session aperite como:'
|
signed_in_as: 'Session aperite como:'
|
||||||
verification:
|
verification:
|
||||||
extra_instructions_html: <strong>Consilio:</strong> Le ligamine sur tu sito web pote esser invisibile. Le parte importante es <code>rel="me"</code> que impedi le usurpation de identitate sur sitos web con contento generate per usatores. Tu pote mesmo usar un etiquetta <code>link</code> in le capite del pagina in vice de <code>a</code>, ma le codice HTML debe esser accessibile sin executar JavaScript.
|
extra_instructions_html: <strong>Consilio:</strong> Le ligamine sur tu sito web pote esser invisibile. Le parte importante es <code>rel="me"</code> que impedi le usurpation de identitate sur sitos web con contento generate per usatores. Tu pote mesmo usar un etiquetta <code>link</code> in le capite del pagina in vice de <code>a</code>, ma le codice HTML debe esser accessibile sin executar JavaScript.
|
||||||
|
|
|
@ -29,6 +29,7 @@ ja:
|
||||||
created_msg: モデレーションメモを書き込みました!
|
created_msg: モデレーションメモを書き込みました!
|
||||||
destroyed_msg: モデレーションメモを削除しました!
|
destroyed_msg: モデレーションメモを削除しました!
|
||||||
accounts:
|
accounts:
|
||||||
|
add_email_domain_block: メールのドメインをブロック
|
||||||
approve: 承認
|
approve: 承認
|
||||||
approved_msg: "%{username}さんの登録申請を承認しました"
|
approved_msg: "%{username}さんの登録申請を承認しました"
|
||||||
are_you_sure: 本当に実行しますか?
|
are_you_sure: 本当に実行しますか?
|
||||||
|
@ -55,6 +56,7 @@ ja:
|
||||||
demote: 降格
|
demote: 降格
|
||||||
destroyed_msg: "%{username}さんのデータは完全に削除されるよう登録されました"
|
destroyed_msg: "%{username}さんのデータは完全に削除されるよう登録されました"
|
||||||
disable: 無効化
|
disable: 無効化
|
||||||
|
disable_sign_in_token_auth: メールトークン認証を無効化
|
||||||
disable_two_factor_authentication: 二要素認証を無効にする
|
disable_two_factor_authentication: 二要素認証を無効にする
|
||||||
disabled: 無効
|
disabled: 無効
|
||||||
display_name: 表示名
|
display_name: 表示名
|
||||||
|
@ -63,6 +65,7 @@ ja:
|
||||||
email: メールアドレス
|
email: メールアドレス
|
||||||
email_status: メールアドレスの状態
|
email_status: メールアドレスの状態
|
||||||
enable: 有効化
|
enable: 有効化
|
||||||
|
enable_sign_in_token_auth: メールトークン認証を有効化
|
||||||
enabled: 有効
|
enabled: 有効
|
||||||
enabled_msg: "%{username}の無効化を解除しました"
|
enabled_msg: "%{username}の無効化を解除しました"
|
||||||
followers: フォロワー数
|
followers: フォロワー数
|
||||||
|
@ -126,6 +129,7 @@ ja:
|
||||||
resubscribe: 再講読
|
resubscribe: 再講読
|
||||||
role: ロール
|
role: ロール
|
||||||
search: 検索
|
search: 検索
|
||||||
|
search_same_email_domain: 同じメールドメインを持つ他のユーザ
|
||||||
search_same_ip: 同じIPのユーザーを検索
|
search_same_ip: 同じIPのユーザーを検索
|
||||||
security: 認証方法
|
security: 認証方法
|
||||||
security_measures:
|
security_measures:
|
||||||
|
@ -166,21 +170,26 @@ ja:
|
||||||
approve_appeal: 抗議を承認
|
approve_appeal: 抗議を承認
|
||||||
approve_user: ユーザーの承認
|
approve_user: ユーザーの承認
|
||||||
assigned_to_self_report: 通報の担当者に設定
|
assigned_to_self_report: 通報の担当者に設定
|
||||||
|
change_email_user: ユーザーのメールアドレスの変更
|
||||||
change_role_user: ユーザーのロールを変更
|
change_role_user: ユーザーのロールを変更
|
||||||
confirm_user: ユーザーの確認
|
confirm_user: ユーザーの確認
|
||||||
create_account_warning: 警告を作成
|
create_account_warning: 警告を作成
|
||||||
create_announcement: お知らせを作成
|
create_announcement: お知らせを作成
|
||||||
|
create_canonical_email_block: メールアドレスブロックの作成
|
||||||
create_custom_emoji: カスタム絵文字を作成
|
create_custom_emoji: カスタム絵文字を作成
|
||||||
create_domain_allow: 連合を許可
|
create_domain_allow: 連合を許可
|
||||||
create_domain_block: ドメインブロックを作成
|
create_domain_block: ドメインブロックを作成
|
||||||
|
create_email_domain_block: メールドメインブロックを作成
|
||||||
create_ip_block: IPルールを作成
|
create_ip_block: IPルールを作成
|
||||||
create_unavailable_domain: 配送できないドメインを作成
|
create_unavailable_domain: 配送できないドメインを作成
|
||||||
create_user_role: ロールを作成
|
create_user_role: ロールを作成
|
||||||
demote_user: ユーザーを降格
|
demote_user: ユーザーを降格
|
||||||
destroy_announcement: お知らせを削除
|
destroy_announcement: お知らせを削除
|
||||||
|
destroy_canonical_email_block: メールアドレスブロックの削除
|
||||||
destroy_custom_emoji: カスタム絵文字を削除
|
destroy_custom_emoji: カスタム絵文字を削除
|
||||||
destroy_domain_allow: 連合許可を外す
|
destroy_domain_allow: 連合許可を外す
|
||||||
destroy_domain_block: ドメインブロックを削除
|
destroy_domain_block: ドメインブロックを削除
|
||||||
|
destroy_email_domain_block: メールドメインブロックを削除
|
||||||
destroy_instance: ドメインをブロックする
|
destroy_instance: ドメインをブロックする
|
||||||
destroy_ip_block: IPルールを削除
|
destroy_ip_block: IPルールを削除
|
||||||
destroy_status: 投稿を削除
|
destroy_status: 投稿を削除
|
||||||
|
@ -188,8 +197,10 @@ ja:
|
||||||
destroy_user_role: ロールを削除
|
destroy_user_role: ロールを削除
|
||||||
disable_2fa_user: 二要素認証を無効化
|
disable_2fa_user: 二要素認証を無効化
|
||||||
disable_custom_emoji: カスタム絵文字を無効化
|
disable_custom_emoji: カスタム絵文字を無効化
|
||||||
|
disable_sign_in_token_auth_user: ユーザのメールトークン認証を無効化
|
||||||
disable_user: ユーザーを無効化
|
disable_user: ユーザーを無効化
|
||||||
enable_custom_emoji: カスタム絵文字を有効化
|
enable_custom_emoji: カスタム絵文字を有効化
|
||||||
|
enable_sign_in_token_auth_user: ユーザのメールトークン認証を有効化
|
||||||
enable_user: ユーザーを有効化
|
enable_user: ユーザーを有効化
|
||||||
memorialize_account: 追悼アカウント化
|
memorialize_account: 追悼アカウント化
|
||||||
promote_user: ユーザーを昇格
|
promote_user: ユーザーを昇格
|
||||||
|
@ -219,20 +230,26 @@ ja:
|
||||||
approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました"
|
approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました"
|
||||||
approve_user_html: "%{name}さんが%{target}さんからの登録を承認しました"
|
approve_user_html: "%{name}さんが%{target}さんからの登録を承認しました"
|
||||||
assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました"
|
assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました"
|
||||||
|
change_email_user_html: "%{name}さんが%{target}さんのメールアドレスを変更しました"
|
||||||
change_role_user_html: "%{name}さんが%{target}さんのロールを変更しました"
|
change_role_user_html: "%{name}さんが%{target}さんのロールを変更しました"
|
||||||
|
confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました"
|
||||||
create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました"
|
create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました"
|
||||||
create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました"
|
create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました"
|
||||||
|
create_canonical_email_block_html: "%{name}さんがメールアドレス (ハッシュ値: %{target}) をブロックしました"
|
||||||
create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました"
|
create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました"
|
||||||
create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました"
|
create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました"
|
||||||
create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました"
|
create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました"
|
||||||
|
create_email_domain_block_html: "%{name}さんがメールドメイン %{target} をブロックしました"
|
||||||
create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました"
|
create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました"
|
||||||
create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました"
|
create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました"
|
||||||
create_user_role_html: "%{name}さんがロール『%{target}』を作成しました"
|
create_user_role_html: "%{name}さんがロール『%{target}』を作成しました"
|
||||||
demote_user_html: "%{name}さんが%{target}さんを降格しました"
|
demote_user_html: "%{name}さんが%{target}さんを降格しました"
|
||||||
destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました"
|
destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました"
|
||||||
|
destroy_canonical_email_block_html: "%{name}さんがメールアドレス (ハッシュ値: %{target}) のブロックを外しました"
|
||||||
destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました"
|
destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました"
|
||||||
destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました"
|
destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました"
|
||||||
destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました"
|
destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました"
|
||||||
|
destroy_email_domain_block_html: "%{name} がメールドメイン %{target} のブロックを外しました"
|
||||||
destroy_instance_html: "%{name}さんがドメイン %{target}をブロックしました"
|
destroy_instance_html: "%{name}さんがドメイン %{target}をブロックしました"
|
||||||
destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました"
|
destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました"
|
||||||
destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました"
|
destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました"
|
||||||
|
@ -240,8 +257,10 @@ ja:
|
||||||
destroy_user_role_html: "%{name}さんがロール『%{target}』を削除しました"
|
destroy_user_role_html: "%{name}さんがロール『%{target}』を削除しました"
|
||||||
disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました"
|
disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました"
|
||||||
disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました"
|
disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました"
|
||||||
|
disable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を無効化しました"
|
||||||
disable_user_html: "%{name}さんが%{target}さんのログインを無効化しました"
|
disable_user_html: "%{name}さんが%{target}さんのログインを無効化しました"
|
||||||
enable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を有効化しました"
|
enable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を有効化しました"
|
||||||
|
enable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を有効化しました"
|
||||||
enable_user_html: "%{name}さんが%{target}さんのログインを有効化しました"
|
enable_user_html: "%{name}さんが%{target}さんのログインを有効化しました"
|
||||||
memorialize_account_html: "%{name}さんが%{target}さんを追悼アカウントページに登録しました"
|
memorialize_account_html: "%{name}さんが%{target}さんを追悼アカウントページに登録しました"
|
||||||
promote_user_html: "%{name}さんが%{target}さんを昇格しました"
|
promote_user_html: "%{name}さんが%{target}さんを昇格しました"
|
||||||
|
@ -249,6 +268,7 @@ ja:
|
||||||
reject_user_html: "%{name}さんが%{target}さんからの登録を拒否しました"
|
reject_user_html: "%{name}さんが%{target}さんからの登録を拒否しました"
|
||||||
remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました"
|
remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました"
|
||||||
reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました"
|
reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました"
|
||||||
|
resend_user_html: "%{name}さんが %{target} の確認メールを再送信しました"
|
||||||
reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました"
|
reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました"
|
||||||
resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました"
|
resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました"
|
||||||
sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました"
|
sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました"
|
||||||
|
@ -443,6 +463,9 @@ ja:
|
||||||
title: おすすめフォロー
|
title: おすすめフォロー
|
||||||
unsuppress: おすすめフォローを復元
|
unsuppress: おすすめフォローを復元
|
||||||
instances:
|
instances:
|
||||||
|
audit_log:
|
||||||
|
title: 最近の監査ログ
|
||||||
|
view_all: 全ての監査ログを閲覧
|
||||||
availability:
|
availability:
|
||||||
description_html:
|
description_html:
|
||||||
other: ドメインへの配信が <strong>%{count}</strong> 日失敗した場合、そのドメイン<em>からの</em>配信を受信しない限り、それ以上の配信を行いません。
|
other: ドメインへの配信が <strong>%{count}</strong> 日失敗した場合、そのドメイン<em>からの</em>配信を受信しない限り、それ以上の配信を行いません。
|
||||||
|
@ -565,6 +588,7 @@ ja:
|
||||||
resolve_description_html: 報告されたアカウントに対していかなる措置も取られず、ストライクも記録されず、報告は終了します。
|
resolve_description_html: 報告されたアカウントに対していかなる措置も取られず、ストライクも記録されず、報告は終了します。
|
||||||
silence_description_html: このアカウントは、すでにフォローしている人、または手動で検索した人にしか見えないため、リーチが極端に制限されます。いつでも元に戻すことができます。このアカウントに対するすべての通報をクローズします。
|
silence_description_html: このアカウントは、すでにフォローしている人、または手動で検索した人にしか見えないため、リーチが極端に制限されます。いつでも元に戻すことができます。このアカウントに対するすべての通報をクローズします。
|
||||||
suspend_description_html: アカウントとそのすべての内容にアクセスできなくなり、最終的に削除され、やり取りは不可能になります。 30日以内であれば元に戻すことができます。このアカウントに対するすべての通報をクローズします。
|
suspend_description_html: アカウントとそのすべての内容にアクセスできなくなり、最終的に削除され、やり取りは不可能になります。 30日以内であれば元に戻すことができます。このアカウントに対するすべての通報をクローズします。
|
||||||
|
actions_description_html: このレポートへのアクションを決定してください。アカウントへ懲罰的な措置を取った場合、<strong>Span</strong>カテゴリが選択されている場合を除き、メール通知が送信されます。
|
||||||
actions_description_remote_html: この通報を解決するためのアクションを選択してください。これは<strong>あなたの</strong>サーバーがこのリモートアカウントと通信し、そのコンテンツを処理する時のみ影響します。
|
actions_description_remote_html: この通報を解決するためのアクションを選択してください。これは<strong>あなたの</strong>サーバーがこのリモートアカウントと通信し、そのコンテンツを処理する時のみ影響します。
|
||||||
add_to_report: 通報にさらに追加
|
add_to_report: 通報にさらに追加
|
||||||
already_suspended_badges:
|
already_suspended_badges:
|
||||||
|
@ -629,6 +653,7 @@ ja:
|
||||||
delete_data_html: 停止が解除されないまま30日経過すると、<strong>@%{acct}</strong>さんのプロフィールとコンテンツは削除されます
|
delete_data_html: 停止が解除されないまま30日経過すると、<strong>@%{acct}</strong>さんのプロフィールとコンテンツは削除されます
|
||||||
preview_preamble_html: "<strong>@%{acct}</strong>さんに次の内容の警告を通知します:"
|
preview_preamble_html: "<strong>@%{acct}</strong>さんに次の内容の警告を通知します:"
|
||||||
record_strike_html: 今後、<strong>@%{acct}</strong>さんが違反行為をしたときにエスカレーションできるように、このアカウントに対するストライクを記録します
|
record_strike_html: 今後、<strong>@%{acct}</strong>さんが違反行為をしたときにエスカレーションできるように、このアカウントに対するストライクを記録します
|
||||||
|
send_email_html: "<strong>@%{acct}</strong>さんに警告メールを送信します"
|
||||||
warning_placeholder: アクションを行使する追加の理由(オプション)
|
warning_placeholder: アクションを行使する追加の理由(オプション)
|
||||||
target_origin: 報告されたアカウントの起源
|
target_origin: 報告されたアカウントの起源
|
||||||
title: 通報
|
title: 通報
|
||||||
|
@ -666,6 +691,7 @@ ja:
|
||||||
manage_appeals: 抗議の管理
|
manage_appeals: 抗議の管理
|
||||||
manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます
|
manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます
|
||||||
manage_blocks: ブロックの管理
|
manage_blocks: ブロックの管理
|
||||||
|
manage_blocks_description: メールプロバイダとIPアドレスのブロックを許可
|
||||||
manage_custom_emojis: カスタム絵文字を管理
|
manage_custom_emojis: カスタム絵文字を管理
|
||||||
manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします
|
manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします
|
||||||
manage_federation: 連合の管理
|
manage_federation: 連合の管理
|
||||||
|
@ -683,6 +709,7 @@ ja:
|
||||||
manage_taxonomies: 分類の管理
|
manage_taxonomies: 分類の管理
|
||||||
manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新
|
manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新
|
||||||
manage_user_access: アクセス権を管理
|
manage_user_access: アクセス権を管理
|
||||||
|
manage_user_access_description: 他のユーザの二段階認証の無効化、メールアドレスの変更、パスワードリセットを許可
|
||||||
manage_users: ユーザーの管理
|
manage_users: ユーザーの管理
|
||||||
manage_users_description: 他のユーザーの詳細情報を閲覧し、モデレーションを行うことができます。
|
manage_users_description: 他のユーザーの詳細情報を閲覧し、モデレーションを行うことができます。
|
||||||
manage_webhooks: Webhookの管理
|
manage_webhooks: Webhookの管理
|
||||||
|
@ -757,6 +784,7 @@ ja:
|
||||||
destroyed_msg: ファイルを削除しました!
|
destroyed_msg: ファイルを削除しました!
|
||||||
software_updates:
|
software_updates:
|
||||||
critical_update: "※緊急 (速やかに適用してください)"
|
critical_update: "※緊急 (速やかに適用してください)"
|
||||||
|
description: Mastodonサーバーはいつでも最新の状態を保ち、新しい機能や修正を利用できるようにしておくことをおすすめします。またセキュリティの問題が発生した場合は、速やかにMastodonをアップデートすることが大切です。Mastodonは30分おきにアップデートを確認し、通知設定に応じて新しいアップデートをメールで通知します。
|
||||||
documentation_link: もっと見る
|
documentation_link: もっと見る
|
||||||
release_notes: リリースノート
|
release_notes: リリースノート
|
||||||
title: 利用可能なアップデート
|
title: 利用可能なアップデート
|
||||||
|
@ -843,16 +871,39 @@ ja:
|
||||||
action: ここを開いて詳細を確認してください
|
action: ここを開いて詳細を確認してください
|
||||||
message_html: "<strong>オブジェクトストレージが正しく設定されていません。ユーザーのプライバシーが危険な状態になっています。</strong>"
|
message_html: "<strong>オブジェクトストレージが正しく設定されていません。ユーザーのプライバシーが危険な状態になっています。</strong>"
|
||||||
tags:
|
tags:
|
||||||
|
moderation:
|
||||||
|
not_trendable: トレンド不許可
|
||||||
|
not_usable: 使用不可
|
||||||
|
pending_review: 審査を保留中
|
||||||
|
review_requested: 審査待ち
|
||||||
|
reviewed: 審査済
|
||||||
|
title: ステータス
|
||||||
|
trendable: トレンド許可済
|
||||||
|
unreviewed: 未審査
|
||||||
|
usable: 使用可能
|
||||||
|
name: タグ名
|
||||||
|
newest: 新しい順
|
||||||
|
oldest: 古い順
|
||||||
|
open: タグ検索を見る
|
||||||
|
reset: リセット
|
||||||
review: 審査状況
|
review: 審査状況
|
||||||
|
search: 検索
|
||||||
|
title: ハッシュタグ
|
||||||
updated_msg: ハッシュタグ設定が更新されました
|
updated_msg: ハッシュタグ設定が更新されました
|
||||||
title: 管理
|
title: 管理
|
||||||
trends:
|
trends:
|
||||||
allow: 許可
|
allow: 許可
|
||||||
approved: 承認
|
approved: 承認
|
||||||
|
confirm_allow: 本当に選択されたタグを許可しますか?
|
||||||
|
confirm_disallow: 本当に選択されたタグを禁止しますか?
|
||||||
disallow: 拒否
|
disallow: 拒否
|
||||||
links:
|
links:
|
||||||
allow: リンクの許可
|
allow: リンクの許可
|
||||||
allow_provider: 発行者の承認
|
allow_provider: 発行者の承認
|
||||||
|
confirm_allow: 本当に選択されたリンクを許可しますか?
|
||||||
|
confirm_allow_provider: 本当に選択されたプロバイダを許可しますか?
|
||||||
|
confirm_disallow: 本当に選択されたリンクを禁止しますか?
|
||||||
|
confirm_disallow_provider: 本当に選択されたプロバイダを禁止しますか?
|
||||||
description_html: これらは、多くのユーザーに共有されているリンクです。あなたのユーザーが世の中の動きを知るのに役立ちます。あなたが公開者を承認するまで、リンクは一般に表示されません。また、個別のリンクの許可・拒否も可能です。
|
description_html: これらは、多くのユーザーに共有されているリンクです。あなたのユーザーが世の中の動きを知るのに役立ちます。あなたが公開者を承認するまで、リンクは一般に表示されません。また、個別のリンクの許可・拒否も可能です。
|
||||||
disallow: リンクの拒否
|
disallow: リンクの拒否
|
||||||
disallow_provider: 発行者の拒否
|
disallow_provider: 発行者の拒否
|
||||||
|
@ -875,6 +926,10 @@ ja:
|
||||||
statuses:
|
statuses:
|
||||||
allow: 掲載を許可
|
allow: 掲載を許可
|
||||||
allow_account: 投稿者を許可
|
allow_account: 投稿者を許可
|
||||||
|
confirm_allow: 本当に選択されたトゥートを許可しますか?
|
||||||
|
confirm_allow_account: 本当に選択されたアカウントを許可しますか?
|
||||||
|
confirm_disallow: 本当に選択されたトゥートを禁止しますか?
|
||||||
|
confirm_disallow_account: 本当に選択されたアカウントを禁止しますか?
|
||||||
description_html: これらは、このサーバーが知っている、たくさんシェアされ、お気に入り登録されている投稿です。新しいユーザーや久しぶりにアクセスするユーザーがフォローする人を探すのに役立ちます。あなたが投稿者を承認し、投稿者が許可するまで、表示されることはありません。また、個別の投稿を許可または拒否することもできます。
|
description_html: これらは、このサーバーが知っている、たくさんシェアされ、お気に入り登録されている投稿です。新しいユーザーや久しぶりにアクセスするユーザーがフォローする人を探すのに役立ちます。あなたが投稿者を承認し、投稿者が許可するまで、表示されることはありません。また、個別の投稿を許可または拒否することもできます。
|
||||||
disallow: 掲載を拒否
|
disallow: 掲載を拒否
|
||||||
disallow_account: 投稿者を拒否
|
disallow_account: 投稿者を拒否
|
||||||
|
@ -989,7 +1044,9 @@ ja:
|
||||||
guide_link_text: 誰でも参加することができます。
|
guide_link_text: 誰でも参加することができます。
|
||||||
sensitive_content: 閲覧注意コンテンツ
|
sensitive_content: 閲覧注意コンテンツ
|
||||||
application_mailer:
|
application_mailer:
|
||||||
|
notification_preferences: メール設定の変更
|
||||||
salutation: "%{name}さん"
|
salutation: "%{name}さん"
|
||||||
|
settings: 'メール設定の変更: %{link}'
|
||||||
unsubscribe: 購読解除
|
unsubscribe: 購読解除
|
||||||
view: 'リンク:'
|
view: 'リンク:'
|
||||||
view_profile: プロフィールを表示
|
view_profile: プロフィールを表示
|
||||||
|
@ -1009,6 +1066,7 @@ ja:
|
||||||
hint_html: もう一つだけ!あなたが人間であることを確認する必要があります(スパムを防ぐためです!)。 以下のCAPTCHAを解き、「続ける」をクリックします。
|
hint_html: もう一つだけ!あなたが人間であることを確認する必要があります(スパムを防ぐためです!)。 以下のCAPTCHAを解き、「続ける」をクリックします。
|
||||||
title: セキュリティチェック
|
title: セキュリティチェック
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review: メールアドレスが確認できました。%{domain} のスタッフからの審査をお待ちください。承認された場合、メールにより連絡します。
|
||||||
awaiting_review_title: 登録の審査待ちです
|
awaiting_review_title: 登録の審査待ちです
|
||||||
clicking_this_link: このリンクを押す
|
clicking_this_link: このリンクを押す
|
||||||
login_link: ログイン
|
login_link: ログイン
|
||||||
|
@ -1016,6 +1074,7 @@ ja:
|
||||||
redirect_to_app_html: 自動的に<strong>%{app_name}</strong>に戻らなかった場合、%{clicking_this_link}か、手動でアプリを切り替えてください。
|
redirect_to_app_html: 自動的に<strong>%{app_name}</strong>に戻らなかった場合、%{clicking_this_link}か、手動でアプリを切り替えてください。
|
||||||
registration_complete: "%{domain} へのアカウント登録が完了しました。"
|
registration_complete: "%{domain} へのアカウント登録が完了しました。"
|
||||||
welcome_title: ようこそ、%{name}さん!
|
welcome_title: ようこそ、%{name}さん!
|
||||||
|
wrong_email_hint: メールアドレスが正しくない場合は、アカウント設定画面で変更できます。
|
||||||
delete_account: アカウントの削除
|
delete_account: アカウントの削除
|
||||||
delete_account_html: アカウントを削除したい場合、<a href="%{path}">こちら</a>から手続きが行えます。削除する前に、確認画面があります。
|
delete_account_html: アカウントを削除したい場合、<a href="%{path}">こちら</a>から手続きが行えます。削除する前に、確認画面があります。
|
||||||
description:
|
description:
|
||||||
|
@ -1036,6 +1095,7 @@ ja:
|
||||||
or_log_in_with: または次のサービスでログイン
|
or_log_in_with: または次のサービスでログイン
|
||||||
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">プライバシーポリシー</a>を読み、同意します
|
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">プライバシーポリシー</a>を読み、同意します
|
||||||
progress:
|
progress:
|
||||||
|
confirm: メールアドレスの確認
|
||||||
details: ユーザー情報
|
details: ユーザー情報
|
||||||
review: 承認
|
review: 承認
|
||||||
rules: ルール
|
rules: ルール
|
||||||
|
@ -1057,8 +1117,10 @@ ja:
|
||||||
security: セキュリティ
|
security: セキュリティ
|
||||||
set_new_password: 新しいパスワード
|
set_new_password: 新しいパスワード
|
||||||
setup:
|
setup:
|
||||||
|
email_below_hint_html: 確認メールが迷惑メールフォルダに振り分けられていないか確認してください。メールアドレスを間違えた場合は、ここでメールアドレスの変更と確認メールの再送ができます。
|
||||||
email_settings_hint_html: メールに記載のリンクを開いて %{email} を確認してください。
|
email_settings_hint_html: メールに記載のリンクを開いて %{email} を確認してください。
|
||||||
link_not_received: 確認メールを受信できない場合は
|
link_not_received: 確認メールを受信できない場合は
|
||||||
|
new_confirmation_instructions_sent: 確認用のリンクを記載した新しいメールを送信しました
|
||||||
title: 確認メールを送信しました
|
title: 確認メールを送信しました
|
||||||
sign_in:
|
sign_in:
|
||||||
preamble_html: "<strong>%{domain}</strong> の資格情報でサインインします。 あなたのアカウントが別のサーバーでホストされている場合は、ここでログインすることはできません。"
|
preamble_html: "<strong>%{domain}</strong> の資格情報でサインインします。 あなたのアカウントが別のサーバーでホストされている場合は、ここでログインすることはできません。"
|
||||||
|
@ -1069,7 +1131,9 @@ ja:
|
||||||
title: さあ %{domain} でセットアップしましょう.
|
title: さあ %{domain} でセットアップしましょう.
|
||||||
status:
|
status:
|
||||||
account_status: アカウントの状態
|
account_status: アカウントの状態
|
||||||
|
confirming: メールアドレスの確認が完了するのを待っています。
|
||||||
functional: アカウントは完全に機能しています。
|
functional: アカウントは完全に機能しています。
|
||||||
|
pending: あなたの申請は現在サーバー管理者による審査待ちです。これにはしばらくかかります。申請が承認されるとメールが届きます。
|
||||||
redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。
|
redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。
|
||||||
self_destruct: "%{domain} は閉鎖されるため、今後このアカウントでは限られた操作しかできません。"
|
self_destruct: "%{domain} は閉鎖されるため、今後このアカウントでは限られた操作しかできません。"
|
||||||
view_strikes: 過去のストライクを表示
|
view_strikes: 過去のストライクを表示
|
||||||
|
@ -1112,6 +1176,9 @@ ja:
|
||||||
before: '続行する前に、次の点を再度確認してください:'
|
before: '続行する前に、次の点を再度確認してください:'
|
||||||
caches: 他のサーバーにコンテンツのキャッシュがずっと残る場合があります
|
caches: 他のサーバーにコンテンツのキャッシュがずっと残る場合があります
|
||||||
data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます
|
data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます
|
||||||
|
email_change_html: アカウントを削除しなくても<a href="%{path}">メールアドレスを変更</a>できます
|
||||||
|
email_contact_html: それでも届かない場合、<a href="mailto:%{email}">%{email}</a>までメールで問い合わせてください
|
||||||
|
email_reconfirmation_html: 確認メールが届かない場合は<a href="%{path}">こちらから確認メールを再送</a>してみてください
|
||||||
irreversible: 削除操作の撤回やアカウントの復活はできません
|
irreversible: 削除操作の撤回やアカウントの復活はできません
|
||||||
more_details_html: 詳しくは<a href="%{terms_path}">プライバシーポリシー</a>をご覧ください。
|
more_details_html: 詳しくは<a href="%{terms_path}">プライバシーポリシー</a>をご覧ください。
|
||||||
username_available: あなたのユーザー名は再利用できるようになります
|
username_available: あなたのユーザー名は再利用できるようになります
|
||||||
|
@ -1336,6 +1403,7 @@ ja:
|
||||||
authentication_methods:
|
authentication_methods:
|
||||||
otp: 二要素認証アプリ
|
otp: 二要素認証アプリ
|
||||||
password: パスワード
|
password: パスワード
|
||||||
|
sign_in_token: メール認証
|
||||||
webauthn: セキュリティキー
|
webauthn: セキュリティキー
|
||||||
description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と二要素認証の有効化を検討してください。
|
description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と二要素認証の有効化を検討してください。
|
||||||
empty: 利用可能な認証履歴がありません
|
empty: 利用可能な認証履歴がありません
|
||||||
|
@ -1436,6 +1504,8 @@ ja:
|
||||||
update:
|
update:
|
||||||
subject: "%{name}さんが投稿を更新しました"
|
subject: "%{name}さんが投稿を更新しました"
|
||||||
notifications:
|
notifications:
|
||||||
|
administration_emails: 管理にかかわるメール通知
|
||||||
|
email_events: メールによる通知
|
||||||
email_events_hint: '受信する通知を選択:'
|
email_events_hint: '受信する通知を選択:'
|
||||||
number:
|
number:
|
||||||
human:
|
human:
|
||||||
|
@ -1834,6 +1904,7 @@ ja:
|
||||||
invalid_otp_token: 二要素認証コードが間違っています
|
invalid_otp_token: 二要素認証コードが間違っています
|
||||||
otp_lost_help_html: どちらも使用できない場合、%{email}に連絡を取ると解決できるかもしれません
|
otp_lost_help_html: どちらも使用できない場合、%{email}に連絡を取ると解決できるかもしれません
|
||||||
rate_limited: 認証に失敗した回数が多すぎます。時間をおいてからログインしてください。
|
rate_limited: 認証に失敗した回数が多すぎます。時間をおいてからログインしてください。
|
||||||
|
seamless_external_login: あなたは外部サービスを介してログインしているため、パスワードとメールアドレスの設定は利用できません。
|
||||||
signed_in_as: '下記でログイン中:'
|
signed_in_as: '下記でログイン中:'
|
||||||
verification:
|
verification:
|
||||||
extra_instructions_html: <strong>ワンポイント:</strong> webサイト上のプロフィールへのリンクは表示上見えなくてもかまいません。重要な部分は <code>rel="me"</code> で、これはユーザーが自由にリンクを作成可能なサイトを悪用してなりすまされるのを防ぐための情報です。<code>a</code> タグを配置する代わりに <code>link</code> タグをHTMLヘッダーに挿入することでも認証が可能です。ただし、HTMLにはJavaScriptを使わなくてもアクセスできるようにしてください。
|
extra_instructions_html: <strong>ワンポイント:</strong> webサイト上のプロフィールへのリンクは表示上見えなくてもかまいません。重要な部分は <code>rel="me"</code> で、これはユーザーが自由にリンクを作成可能なサイトを悪用してなりすまされるのを防ぐための情報です。<code>a</code> タグを配置する代わりに <code>link</code> タグをHTMLヘッダーに挿入することでも認証が可能です。ただし、HTMLにはJavaScriptを使わなくてもアクセスできるようにしてください。
|
||||||
|
|
|
@ -440,8 +440,11 @@ lad:
|
||||||
create: Adjusta domeno
|
create: Adjusta domeno
|
||||||
resolve: Rezolve domeno
|
resolve: Rezolve domeno
|
||||||
title: Bloka muevo domeno de posta
|
title: Bloka muevo domeno de posta
|
||||||
|
no_email_domain_block_selected: No se tienen trokado blokos de domeno porke dinguno a sido eskojido
|
||||||
not_permitted: Sin permiso
|
not_permitted: Sin permiso
|
||||||
|
resolved_dns_records_hint_html: El nombre de domeno rezolve los sigientes domenos MX, los kualos son responsavles en ultima instansya de achetar la posta elektronika. Blokar un domeno MX blokara los rejistros de kualkier adreso de posta elektronika ke utilize el mezmo domeno MX, inkluzo si el nombre de domeno vizivle es desferente. <strong>Tenga kudiado de no blokar los prinsipales domenos de posta elektronika.</strong>
|
||||||
resolved_through_html: Rezolvido por %{domain}
|
resolved_through_html: Rezolvido por %{domain}
|
||||||
|
title: Domenos de posta blokados
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Importa permisos de domeno
|
title: Importa permisos de domeno
|
||||||
|
|
|
@ -582,6 +582,8 @@ lt:
|
||||||
trending: Tendencinga
|
trending: Tendencinga
|
||||||
with_media: Su medija
|
with_media: Su medija
|
||||||
system_checks:
|
system_checks:
|
||||||
|
database_schema_check:
|
||||||
|
message_html: Laukiama duomenų bazės perkėlimo. Paleisk juos, kad įsitikintum, jog programa veikia taip, kaip tikimasi.
|
||||||
elasticsearch_health_yellow:
|
elasticsearch_health_yellow:
|
||||||
message_html: Elasticsearch klasteris yra nesveikas (geltona būsena), galbūt norėsi išsiaiškinti priežastį
|
message_html: Elasticsearch klasteris yra nesveikas (geltona būsena), galbūt norėsi išsiaiškinti priežastį
|
||||||
elasticsearch_preset:
|
elasticsearch_preset:
|
||||||
|
@ -836,7 +838,7 @@ lt:
|
||||||
title: Nepavyko saugumo patvirtinimas
|
title: Nepavyko saugumo patvirtinimas
|
||||||
'429': Stabdomas
|
'429': Stabdomas
|
||||||
'500':
|
'500':
|
||||||
content: Atsiprašome, tačiau mūsų pusėje įvyko klaida.
|
content: Atsiprašome, bet kažkas nutiko ne taip mūsų pusėje.
|
||||||
title: Netinkamas puslapis
|
title: Netinkamas puslapis
|
||||||
noscript_html: Kad naudotumėtės Mastodon web aplikacija, prašome įsijungti JavaScript. Alternatyviai, pabandykite viena iš <a href="%{apps_path}">vietinių aplikacijų</a> Mastodon savo platformai.
|
noscript_html: Kad naudotumėtės Mastodon web aplikacija, prašome įsijungti JavaScript. Alternatyviai, pabandykite viena iš <a href="%{apps_path}">vietinių aplikacijų</a> Mastodon savo platformai.
|
||||||
exports:
|
exports:
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
created_msg: Moderasjonsnotat laget uten problem!
|
created_msg: Moderasjonsnotat laget uten problem!
|
||||||
destroyed_msg: Moderasjonsnotat slettet uten problem!
|
destroyed_msg: Moderasjonsnotat slettet uten problem!
|
||||||
accounts:
|
accounts:
|
||||||
|
add_email_domain_block: Blokker e-postdomenet
|
||||||
approve: Godkjenn
|
approve: Godkjenn
|
||||||
approved_msg: Godkjent %{username} sin registreringsapplikasjon
|
approved_msg: Godkjent %{username} sin registreringsapplikasjon
|
||||||
are_you_sure: Er du sikker?
|
are_you_sure: Er du sikker?
|
||||||
|
|
|
@ -314,6 +314,7 @@ et:
|
||||||
listable: Luba sellel sildil ilmuda profiilide kataloogis
|
listable: Luba sellel sildil ilmuda profiilide kataloogis
|
||||||
name: Silt
|
name: Silt
|
||||||
trendable: Luba sellel sildil trendida
|
trendable: Luba sellel sildil trendida
|
||||||
|
usable: Luba seda märksõna postitustes kasutada lokaalselt
|
||||||
user:
|
user:
|
||||||
role: Roll
|
role: Roll
|
||||||
time_zone: Ajavöönd
|
time_zone: Ajavöönd
|
||||||
|
|
|
@ -313,6 +313,7 @@ ia:
|
||||||
listable: Permitter a iste hashtag apparer in le recercas e suggestiones
|
listable: Permitter a iste hashtag apparer in le recercas e suggestiones
|
||||||
name: Hashtag
|
name: Hashtag
|
||||||
trendable: Permitter a iste hashtag de sub tendentias
|
trendable: Permitter a iste hashtag de sub tendentias
|
||||||
|
usable: Permitter al messages usar iste hashtag localmente
|
||||||
user:
|
user:
|
||||||
role: Rolo
|
role: Rolo
|
||||||
time_zone: Fuso horari
|
time_zone: Fuso horari
|
||||||
|
|
|
@ -314,6 +314,7 @@ ja:
|
||||||
listable: 検索とディレクトリへの使用を許可する
|
listable: 検索とディレクトリへの使用を許可する
|
||||||
name: ハッシュタグ
|
name: ハッシュタグ
|
||||||
trendable: トレンドへの表示を許可する
|
trendable: トレンドへの表示を許可する
|
||||||
|
usable: このサーバーのユーザーがタグをつけて投稿することを許可する
|
||||||
user:
|
user:
|
||||||
role: ロール
|
role: ロール
|
||||||
time_zone: タイムゾーン
|
time_zone: タイムゾーン
|
||||||
|
|
|
@ -20,7 +20,7 @@ kab:
|
||||||
irreversible: Tisuffaɣ i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat
|
irreversible: Tisuffaɣ i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat
|
||||||
locale: Tutlayt n ugrudem, imaylen d walɣuten yettudemren
|
locale: Tutlayt n ugrudem, imaylen d walɣuten yettudemren
|
||||||
password: Seqdec ma drus 8 n yisekkilen
|
password: Seqdec ma drus 8 n yisekkilen
|
||||||
setting_display_media_default: Ffer teywalt yettwacreḍ d tanafrit
|
setting_display_media_default: Ffer imidyaten yettwacreḍ d infariyen
|
||||||
setting_display_media_hide_all: Ffer yal tikkelt akk taywalt
|
setting_display_media_hide_all: Ffer yal tikkelt akk taywalt
|
||||||
setting_display_media_show_all: Ffer yal tikkelt teywalt yettwacreḍ d tanafrit
|
setting_display_media_show_all: Ffer yal tikkelt teywalt yettwacreḍ d tanafrit
|
||||||
username: Tzemreḍ ad tesqedceḍ isekkilen, uṭṭunen akked yijerriden n wadda
|
username: Tzemreḍ ad tesqedceḍ isekkilen, uṭṭunen akked yijerriden n wadda
|
||||||
|
|
|
@ -85,7 +85,7 @@ uk:
|
||||||
custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon.
|
custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon.
|
||||||
favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну.
|
favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну.
|
||||||
mascot: Змінює ілюстрацію в розширеному вебінтерфейсі.
|
mascot: Змінює ілюстрацію в розширеному вебінтерфейсі.
|
||||||
media_cache_retention_period: Медіафайли з дописів віддалених користувачів кешуються на вашому сервері. Якщо встановлено додатне значення, медіа буде видалено через вказану кількість днів. Якщо медіа-дані будуть запитані після видалення, вони будуть завантажені повторно, якщо вихідний вміст все ще доступний. Через обмеження на частоту опитування карток попереднього перегляду посилань на сторонніх сайтах, рекомендується встановити це значення не менше 14 днів, інакше картки попереднього перегляду посилань не будуть оновлюватися на вимогу раніше цього часу.
|
media_cache_retention_period: Медіафайли з дописів віддалених користувачів кешуються на вашому сервері. Якщо встановлено додатне значення, медіа буде видалено через вказану кількість днів. Якщо медіадані будуть запитані після видалення, вони будуть завантажені повторно, якщо вихідний вміст все ще доступний. Через обмеження на частоту опитування карток попереднього перегляду посилань на сторонніх сайтах, рекомендується встановити це значення не менше 14 днів, інакше картки попереднього перегляду посилань не будуть оновлюватися на вимогу раніше цього часу.
|
||||||
peers_api_enabled: Список доменів імен цього сервера з'явився у федівсесвіті. Сюди не входять дані чи ви пов'язані федерацією з цим сервером, а лише відомості, що вашому серверу відомо про нього. Його використовують служби, які збирають загальну статистику про федерації.
|
peers_api_enabled: Список доменів імен цього сервера з'явився у федівсесвіті. Сюди не входять дані чи ви пов'язані федерацією з цим сервером, а лише відомості, що вашому серверу відомо про нього. Його використовують служби, які збирають загальну статистику про федерації.
|
||||||
profile_directory: У каталозі профілів перераховані всі користувачі, які погодились бути видимими.
|
profile_directory: У каталозі профілів перераховані всі користувачі, які погодились бути видимими.
|
||||||
require_invite_text: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим
|
require_invite_text: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим
|
||||||
|
|
|
@ -35,6 +35,7 @@ sk:
|
||||||
created_msg: Poznámka moderátora bola úspešne vytvorená!
|
created_msg: Poznámka moderátora bola úspešne vytvorená!
|
||||||
destroyed_msg: Moderátorska poznámka bola úspešne zmazaná!
|
destroyed_msg: Moderátorska poznámka bola úspešne zmazaná!
|
||||||
accounts:
|
accounts:
|
||||||
|
add_email_domain_block: Blokuj emailovú doménu
|
||||||
approve: Schváľ
|
approve: Schváľ
|
||||||
approved_msg: Úspešne schválená prihláška %{username}
|
approved_msg: Úspešne schválená prihláška %{username}
|
||||||
are_you_sure: Si si istý/á?
|
are_you_sure: Si si istý/á?
|
||||||
|
@ -170,10 +171,12 @@ sk:
|
||||||
approve_appeal: Schváľ námietku
|
approve_appeal: Schváľ námietku
|
||||||
approve_user: Odobri užívateľa
|
approve_user: Odobri užívateľa
|
||||||
assigned_to_self_report: Priraď hlásenie
|
assigned_to_self_report: Priraď hlásenie
|
||||||
|
change_email_user: Zmeň email pre užívateľa
|
||||||
change_role_user: Zmeň užívateľskú rolu
|
change_role_user: Zmeň užívateľskú rolu
|
||||||
confirm_user: Potvrď užívateľa
|
confirm_user: Potvrď užívateľa
|
||||||
create_account_warning: Vytvor výstrahu
|
create_account_warning: Vytvor výstrahu
|
||||||
create_announcement: Vytvor oboznámenie
|
create_announcement: Vytvor oboznámenie
|
||||||
|
create_canonical_email_block: Vytvor blokovanie emailu
|
||||||
create_custom_emoji: Vytvor vlastné emotikony
|
create_custom_emoji: Vytvor vlastné emotikony
|
||||||
create_domain_allow: Vytvor povolenie pre doménu
|
create_domain_allow: Vytvor povolenie pre doménu
|
||||||
create_domain_block: Vytvor zákaz domény
|
create_domain_block: Vytvor zákaz domény
|
||||||
|
@ -224,10 +227,13 @@ sk:
|
||||||
change_role_user_html: "%{name} zmenil/a rolu pre %{target}"
|
change_role_user_html: "%{name} zmenil/a rolu pre %{target}"
|
||||||
create_account_warning_html: "%{name} poslal/a upozornenie užívateľovi %{target}"
|
create_account_warning_html: "%{name} poslal/a upozornenie užívateľovi %{target}"
|
||||||
create_announcement_html: "%{name} vytvoril/a nové oboznámenie %{target}"
|
create_announcement_html: "%{name} vytvoril/a nové oboznámenie %{target}"
|
||||||
|
create_canonical_email_block_html: "%{name} zablokoval/a email s hašom %{target}"
|
||||||
create_custom_emoji_html: "%{name} nahral/a novú emotikonu %{target}"
|
create_custom_emoji_html: "%{name} nahral/a novú emotikonu %{target}"
|
||||||
create_domain_allow_html: "%{name} povolil/a federáciu s doménou %{target}"
|
create_domain_allow_html: "%{name} povolil/a federáciu s doménou %{target}"
|
||||||
create_domain_block_html: "%{name} zablokoval/a doménu %{target}"
|
create_domain_block_html: "%{name} zablokoval/a doménu %{target}"
|
||||||
|
create_email_domain_block_html: "%{name} zablokoval/a emailovú doménu %{target}"
|
||||||
create_ip_block_html: "%{name} vytvoril/a pravidlo pre IP %{target}"
|
create_ip_block_html: "%{name} vytvoril/a pravidlo pre IP %{target}"
|
||||||
|
create_unavailable_domain_html: "%{name} pozastavil/a doručovanie k doméne %{target}"
|
||||||
create_user_role_html: "%{name} vytvoril/a rolu pre %{target}"
|
create_user_role_html: "%{name} vytvoril/a rolu pre %{target}"
|
||||||
demote_user_html: "%{name} degradoval/a užívateľa %{target}"
|
demote_user_html: "%{name} degradoval/a užívateľa %{target}"
|
||||||
destroy_announcement_html: "%{name} vymazal/a oboznámenie %{target}"
|
destroy_announcement_html: "%{name} vymazal/a oboznámenie %{target}"
|
||||||
|
|
|
@ -786,7 +786,7 @@ uk:
|
||||||
desc_html: Це залежить від зовнішніх скриптів hCaptcha, що може становити загрозу безпеці та приватності. Крім того, <strong>це може зробити процес реєстрації значно менш доступним для деяких людей (особливо з обмеженими можливостями)</strong>. З цих причин, будь ласка, розгляньте альтернативні заходи, такі як реєстрація на основі схвалення або на основі запрошення.
|
desc_html: Це залежить від зовнішніх скриптів hCaptcha, що може становити загрозу безпеці та приватності. Крім того, <strong>це може зробити процес реєстрації значно менш доступним для деяких людей (особливо з обмеженими можливостями)</strong>. З цих причин, будь ласка, розгляньте альтернативні заходи, такі як реєстрація на основі схвалення або на основі запрошення.
|
||||||
title: Вимагати нових користувачів розв'язувати CAPTCHA для підтвердження облікового запису
|
title: Вимагати нових користувачів розв'язувати CAPTCHA для підтвердження облікового запису
|
||||||
content_retention:
|
content_retention:
|
||||||
danger_zone: Зони небезпеки
|
danger_zone: Небезпечна зона
|
||||||
preamble: Контролюйте, як зберігаються користувацькі матеріали в Mastodon.
|
preamble: Контролюйте, як зберігаються користувацькі матеріали в Mastodon.
|
||||||
title: Зберігання вмісту
|
title: Зберігання вмісту
|
||||||
default_noindex:
|
default_noindex:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
class FixReblogsInFeeds < ActiveRecord::Migration[5.1]
|
class FixReblogsInFeeds < ActiveRecord::Migration[5.1]
|
||||||
def up
|
def up
|
||||||
redis = RedisConfiguration.pool.checkout
|
redis = RedisConnection.pool.checkout
|
||||||
fm = FeedManager.instance
|
fm = FeedManager.instance
|
||||||
|
|
||||||
# Old scheme:
|
# Old scheme:
|
||||||
|
|
|
@ -4,7 +4,7 @@ class MigrateUnavailableInboxes < ActiveRecord::Migration[5.2]
|
||||||
disable_ddl_transaction!
|
disable_ddl_transaction!
|
||||||
|
|
||||||
def up
|
def up
|
||||||
redis = RedisConfiguration.pool.checkout
|
redis = RedisConnection.pool.checkout
|
||||||
urls = redis.smembers('unavailable_inboxes')
|
urls = redis.smembers('unavailable_inboxes')
|
||||||
|
|
||||||
hosts = urls.filter_map do |url|
|
hosts = urls.filter_map do |url|
|
||||||
|
|
|
@ -14,7 +14,7 @@ module Chewy
|
||||||
end
|
end
|
||||||
|
|
||||||
def leave
|
def leave
|
||||||
RedisConfiguration.with do |redis|
|
RedisConnection.with do |redis|
|
||||||
redis.pipelined do |pipeline|
|
redis.pipelined do |pipeline|
|
||||||
@stash.each do |type, ids|
|
@stash.each do |type, ids|
|
||||||
pipeline.sadd("chewy:queue:#{type.name}", ids)
|
pipeline.sadd("chewy:queue:#{type.name}", ids)
|
||||||
|
|
|
@ -40,7 +40,7 @@ module Mastodon
|
||||||
.dup
|
.dup
|
||||||
.tap { |config| config['pool'] = options[:concurrency] + 1 }
|
.tap { |config| config['pool'] = options[:concurrency] + 1 }
|
||||||
)
|
)
|
||||||
RedisConfiguration.establish_pool(options[:concurrency])
|
RedisConnection.establish_pool(options[:concurrency])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -51,7 +51,7 @@ module Mastodon::CLI
|
||||||
result = ActiveRecord::Base.connection_pool.with_connection do
|
result = ActiveRecord::Base.connection_pool.with_connection do
|
||||||
yield(item)
|
yield(item)
|
||||||
ensure
|
ensure
|
||||||
RedisConfiguration.pool.checkin if Thread.current[:redis]
|
RedisConnection.pool.checkin if Thread.current[:redis]
|
||||||
Thread.current[:redis] = nil
|
Thread.current[:redis] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Mastodon::RackMiddleware
|
||||||
end
|
end
|
||||||
|
|
||||||
def clean_up_redis_socket!
|
def clean_up_redis_socket!
|
||||||
RedisConfiguration.pool.checkin if Thread.current[:redis]
|
RedisConnection.pool.checkin if Thread.current[:redis]
|
||||||
Thread.current[:redis] = nil
|
Thread.current[:redis] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
def setup_redis_env_url(prefix = nil, defaults = true)
|
|
||||||
prefix = "#{prefix.to_s.upcase}_" unless prefix.nil?
|
|
||||||
prefix = '' if prefix.nil?
|
|
||||||
|
|
||||||
return if ENV["#{prefix}REDIS_URL"].present?
|
|
||||||
|
|
||||||
password = ENV.fetch("#{prefix}REDIS_PASSWORD") { '' if defaults }
|
|
||||||
host = ENV.fetch("#{prefix}REDIS_HOST") { 'localhost' if defaults }
|
|
||||||
port = ENV.fetch("#{prefix}REDIS_PORT") { 6379 if defaults }
|
|
||||||
db = ENV.fetch("#{prefix}REDIS_DB") { 0 if defaults }
|
|
||||||
|
|
||||||
ENV["#{prefix}REDIS_URL"] = begin
|
|
||||||
if [password, host, port, db].all?(&:nil?)
|
|
||||||
ENV['REDIS_URL']
|
|
||||||
else
|
|
||||||
Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri|
|
|
||||||
uri.password = password if password.present?
|
|
||||||
end.normalize.to_str
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
setup_redis_env_url
|
|
||||||
setup_redis_env_url(:cache, false)
|
|
||||||
setup_redis_env_url(:sidekiq, false)
|
|
||||||
|
|
||||||
namespace = ENV.fetch('REDIS_NAMESPACE', nil)
|
|
||||||
cache_namespace = namespace ? "#{namespace}_cache" : 'cache'
|
|
||||||
sidekiq_namespace = namespace
|
|
||||||
|
|
||||||
redis_driver = ENV.fetch('REDIS_DRIVER', 'hiredis') == 'ruby' ? :ruby : :hiredis
|
|
||||||
|
|
||||||
REDIS_CACHE_PARAMS = {
|
|
||||||
driver: redis_driver,
|
|
||||||
url: ENV['CACHE_REDIS_URL'],
|
|
||||||
expires_in: 10.minutes,
|
|
||||||
namespace: "#{cache_namespace}:7.1",
|
|
||||||
connect_timeout: 5,
|
|
||||||
pool: {
|
|
||||||
size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5),
|
|
||||||
timeout: 5,
|
|
||||||
},
|
|
||||||
}.freeze
|
|
||||||
|
|
||||||
REDIS_SIDEKIQ_PARAMS = {
|
|
||||||
driver: redis_driver,
|
|
||||||
url: ENV['SIDEKIQ_REDIS_URL'],
|
|
||||||
namespace: sidekiq_namespace,
|
|
||||||
}.freeze
|
|
||||||
|
|
||||||
ENV['REDIS_NAMESPACE'] = "mastodon_test#{ENV['TEST_ENV_NUMBER']}" if Rails.env.test?
|
|
96
lib/mastodon/redis_configuration.rb
Normal file
96
lib/mastodon/redis_configuration.rb
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Mastodon::RedisConfiguration
|
||||||
|
def base
|
||||||
|
@base ||= {
|
||||||
|
url: setup_base_redis_url,
|
||||||
|
driver: driver,
|
||||||
|
namespace: base_namespace,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def sidekiq
|
||||||
|
@sidekiq ||= {
|
||||||
|
url: setup_prefixed_redis_url(:sidekiq),
|
||||||
|
driver: driver,
|
||||||
|
namespace: sidekiq_namespace,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def cache
|
||||||
|
@cache ||= {
|
||||||
|
url: setup_prefixed_redis_url(:cache),
|
||||||
|
driver: driver,
|
||||||
|
namespace: cache_namespace,
|
||||||
|
expires_in: 10.minutes,
|
||||||
|
connect_timeout: 5,
|
||||||
|
pool: {
|
||||||
|
size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5),
|
||||||
|
timeout: 5,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def driver
|
||||||
|
ENV['REDIS_DRIVER'] == 'ruby' ? :ruby : :hiredis
|
||||||
|
end
|
||||||
|
|
||||||
|
def namespace
|
||||||
|
@namespace ||= ENV.fetch('REDIS_NAMESPACE', nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
def base_namespace
|
||||||
|
return "mastodon_test#{ENV.fetch('TEST_ENV_NUMBER', nil)}" if Rails.env.test?
|
||||||
|
|
||||||
|
namespace
|
||||||
|
end
|
||||||
|
|
||||||
|
def sidekiq_namespace
|
||||||
|
namespace
|
||||||
|
end
|
||||||
|
|
||||||
|
def cache_namespace
|
||||||
|
namespace ? "#{namespace}_cache" : 'cache'
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup_base_redis_url
|
||||||
|
url = ENV.fetch('REDIS_URL', nil)
|
||||||
|
return url if url.present?
|
||||||
|
|
||||||
|
user = ENV.fetch('REDIS_USER', '')
|
||||||
|
password = ENV.fetch('REDIS_PASSWORD', '')
|
||||||
|
host = ENV.fetch('REDIS_HOST', 'localhost')
|
||||||
|
port = ENV.fetch('REDIS_PORT', 6379)
|
||||||
|
db = ENV.fetch('REDIS_DB', 0)
|
||||||
|
|
||||||
|
construct_uri(host, port, db, user, password)
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup_prefixed_redis_url(prefix)
|
||||||
|
prefix = "#{prefix.to_s.upcase}_"
|
||||||
|
url = ENV.fetch("#{prefix}REDIS_URL", nil)
|
||||||
|
|
||||||
|
return url if url.present?
|
||||||
|
|
||||||
|
user = ENV.fetch("#{prefix}REDIS_USER", nil)
|
||||||
|
password = ENV.fetch("#{prefix}REDIS_PASSWORD", nil)
|
||||||
|
host = ENV.fetch("#{prefix}REDIS_HOST", nil)
|
||||||
|
port = ENV.fetch("#{prefix}REDIS_PORT", nil)
|
||||||
|
db = ENV.fetch("#{prefix}REDIS_DB", nil)
|
||||||
|
|
||||||
|
if host.nil?
|
||||||
|
base[:url]
|
||||||
|
else
|
||||||
|
construct_uri(host, port, db, user, password)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def construct_uri(host, port, db, user, password)
|
||||||
|
Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri|
|
||||||
|
uri.user = user if user.present?
|
||||||
|
uri.password = password if password.present?
|
||||||
|
end.normalize.to_str
|
||||||
|
end
|
||||||
|
end
|
|
@ -53,7 +53,7 @@ class Mastodon::SidekiqMiddleware
|
||||||
end
|
end
|
||||||
|
|
||||||
def clean_up_redis_socket!
|
def clean_up_redis_socket!
|
||||||
RedisConfiguration.pool.checkin if Thread.current[:redis]
|
RedisConnection.pool.checkin if Thread.current[:redis]
|
||||||
Thread.current[:redis] = nil
|
Thread.current[:redis] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
170
spec/lib/mastodon/redis_configuration_spec.rb
Normal file
170
spec/lib/mastodon/redis_configuration_spec.rb
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Mastodon::RedisConfiguration do
|
||||||
|
let(:redis_environment) { described_class.new }
|
||||||
|
|
||||||
|
before do
|
||||||
|
# We use one numbered namespace per parallel test runner
|
||||||
|
# in the test env. This here should test the non-test
|
||||||
|
# behavior, so we disable it temporarily.
|
||||||
|
allow(Rails.env).to receive(:test?).and_return(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'setting a different driver' do
|
||||||
|
context 'when setting the `REDIS_DRIVER` variable to `ruby`' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify REDIS_DRIVER: 'ruby' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets the driver accordingly' do
|
||||||
|
expect(subject[:driver]).to eq :ruby
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'setting a namespace' do
|
||||||
|
context 'when setting the `REDIS_NAMESPACE` variable' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify REDIS_NAMESPACE: 'testns' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'uses the value for the namespace' do
|
||||||
|
expect(subject[:namespace]).to eq 'testns'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'secondary configuration' do |prefix|
|
||||||
|
context "when no `#{prefix}_REDIS_` environment variables are present" do
|
||||||
|
it 'uses the url from the base config' do
|
||||||
|
expect(subject[:url]).to eq 'redis://localhost:6379/0'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the `#{prefix}_REDIS_URL` environment variable is present" do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify "#{prefix}_REDIS_URL": 'redis::/user@other.example.com/4' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'uses the provided URL' do
|
||||||
|
expect(subject[:url]).to eq 'redis::/user@other.example.com/4'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when giving separate environment variables' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify "#{prefix}_REDIS_PASSWORD": 'testpass1', "#{prefix}_REDIS_HOST": 'redis2.example.com', "#{prefix}_REDIS_PORT": '3322', "#{prefix}_REDIS_DB": '8' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'constructs the url from them' do
|
||||||
|
expect(subject[:url]).to eq 'redis://:testpass1@redis2.example.com:3322/8'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#base' do
|
||||||
|
subject { redis_environment.base }
|
||||||
|
|
||||||
|
context 'when no `REDIS_` environment variables are present' do
|
||||||
|
it 'uses defaults' do
|
||||||
|
expect(subject).to eq({
|
||||||
|
url: 'redis://localhost:6379/0',
|
||||||
|
driver: :hiredis,
|
||||||
|
namespace: nil,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the `REDIS_URL` environment variable is present' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify REDIS_URL: 'redis::/user@example.com/2' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'uses the provided URL' do
|
||||||
|
expect(subject).to eq({
|
||||||
|
url: 'redis::/user@example.com/2',
|
||||||
|
driver: :hiredis,
|
||||||
|
namespace: nil,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when giving separate environment variables' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify REDIS_PASSWORD: 'testpass', REDIS_HOST: 'redis.example.com', REDIS_PORT: '3333', REDIS_DB: '3' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'constructs the url from them' do
|
||||||
|
expect(subject).to eq({
|
||||||
|
url: 'redis://:testpass@redis.example.com:3333/3',
|
||||||
|
driver: :hiredis,
|
||||||
|
namespace: nil,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
include_examples 'setting a different driver'
|
||||||
|
include_examples 'setting a namespace'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#sidekiq' do
|
||||||
|
subject { redis_environment.sidekiq }
|
||||||
|
|
||||||
|
include_examples 'secondary configuration', 'SIDEKIQ'
|
||||||
|
include_examples 'setting a different driver'
|
||||||
|
include_examples 'setting a namespace'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#cache' do
|
||||||
|
subject { redis_environment.cache }
|
||||||
|
|
||||||
|
it 'includes extra configuration' do
|
||||||
|
expect(subject).to eq({
|
||||||
|
url: 'redis://localhost:6379/0',
|
||||||
|
driver: :hiredis,
|
||||||
|
namespace: 'cache',
|
||||||
|
expires_in: 10.minutes,
|
||||||
|
connect_timeout: 5,
|
||||||
|
pool: {
|
||||||
|
size: 5,
|
||||||
|
timeout: 5,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when `REDIS_NAMESPACE` is not set' do
|
||||||
|
it 'uses the `cache` namespace' do
|
||||||
|
expect(subject[:namespace]).to eq 'cache'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when setting the `REDIS_NAMESPACE` variable' do
|
||||||
|
around do |example|
|
||||||
|
ClimateControl.modify REDIS_NAMESPACE: 'testns' do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'attaches the `_cache` postfix to the namespace' do
|
||||||
|
expect(subject[:namespace]).to eq 'testns_cache'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
include_examples 'secondary configuration', 'CACHE'
|
||||||
|
include_examples 'setting a different driver'
|
||||||
|
end
|
||||||
|
end
|
|
@ -176,5 +176,5 @@ def stub_reset_connection_pools
|
||||||
# TODO: Is there a better way to correctly run specs without stubbing this?
|
# TODO: Is there a better way to correctly run specs without stubbing this?
|
||||||
# (Avoids reset_connection_pools! in test env)
|
# (Avoids reset_connection_pools! in test env)
|
||||||
allow(ActiveRecord::Base).to receive(:establish_connection)
|
allow(ActiveRecord::Base).to receive(:establish_connection)
|
||||||
allow(RedisConfiguration).to receive(:establish_pool)
|
allow(RedisConnection).to receive(:establish_pool)
|
||||||
end
|
end
|
||||||
|
|
|
@ -94,7 +94,7 @@ RSpec.describe 'Domain Blocks' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq(
|
expect(body_as_json).to match(
|
||||||
{
|
{
|
||||||
id: domain_block.id.to_s,
|
id: domain_block.id.to_s,
|
||||||
domain: domain_block.domain,
|
domain: domain_block.domain,
|
||||||
|
|
|
@ -26,7 +26,7 @@ describe 'Translation Languages' do
|
||||||
.to have_http_status(200)
|
.to have_http_status(200)
|
||||||
|
|
||||||
expect(body_as_json)
|
expect(body_as_json)
|
||||||
.to eq({ und: %w(en de), en: ['de'] })
|
.to match({ und: %w(en de), en: ['de'] })
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -60,7 +60,7 @@ RSpec.describe 'Lists' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq({
|
expect(body_as_json).to match({
|
||||||
id: list.id.to_s,
|
id: list.id.to_s,
|
||||||
title: list.title,
|
title: list.title,
|
||||||
replies_policy: list.replies_policy,
|
replies_policy: list.replies_policy,
|
||||||
|
@ -144,7 +144,7 @@ RSpec.describe 'Lists' do
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
list.reload
|
list.reload
|
||||||
|
|
||||||
expect(body_as_json).to eq({
|
expect(body_as_json).to match({
|
||||||
id: list.id.to_s,
|
id: list.id.to_s,
|
||||||
title: list.title,
|
title: list.title,
|
||||||
replies_policy: list.replies_policy,
|
replies_policy: list.replies_policy,
|
||||||
|
|
|
@ -133,7 +133,7 @@ RSpec.describe 'Requests' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq({ merged: true })
|
expect(body_as_json).to match({ merged: true })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ RSpec.describe 'Requests' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq({ merged: false })
|
expect(body_as_json).to match({ merged: false })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ RSpec.describe 'Sources' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq({
|
expect(body_as_json).to match({
|
||||||
id: status.id.to_s,
|
id: status.id.to_s,
|
||||||
text: status.text,
|
text: status.text,
|
||||||
spoiler_text: status.spoiler_text,
|
spoiler_text: status.spoiler_text,
|
||||||
|
@ -52,7 +52,7 @@ RSpec.describe 'Sources' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to eq({
|
expect(body_as_json).to match({
|
||||||
id: status.id.to_s,
|
id: status.id.to_s,
|
||||||
text: status.text,
|
text: status.text,
|
||||||
spoiler_text: status.spoiler_text,
|
spoiler_text: status.spoiler_text,
|
||||||
|
|
|
@ -154,7 +154,7 @@ describe '/api/v1/statuses' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to have_http_status(422)
|
expect(response).to have_http_status(422)
|
||||||
expect(body_as_json[:unexpected_accounts].map { |a| a.slice(:id, :acct) }).to eq [{ id: bob.id.to_s, acct: bob.acct }]
|
expect(body_as_json[:unexpected_accounts].map { |a| a.slice(:id, :acct) }).to match [{ id: bob.id.to_s, acct: bob.acct }]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ RSpec.describe 'Filters' do
|
||||||
expect(json[:title]).to eq 'magic'
|
expect(json[:title]).to eq 'magic'
|
||||||
expect(json[:filter_action]).to eq 'hide'
|
expect(json[:filter_action]).to eq 'hide'
|
||||||
expect(json[:context]).to eq ['home']
|
expect(json[:context]).to eq ['home']
|
||||||
expect(json[:keywords].map { |keyword| keyword.slice(:keyword, :whole_word) }).to eq [{ keyword: 'magic', whole_word: true }]
|
expect(json[:keywords].map { |keyword| keyword.slice(:keyword, :whole_word) }).to match [{ keyword: 'magic', whole_word: true }]
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'creates a filter', :aggregate_failures do
|
it 'creates a filter', :aggregate_failures do
|
||||||
|
|
|
@ -235,7 +235,7 @@ RSpec.describe 'Notifications' do
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json[:partial_accounts].size).to be > 0
|
expect(body_as_json[:partial_accounts].size).to be > 0
|
||||||
expect(body_as_json[:partial_accounts][0].keys).to contain_exactly(:acct, :avatar, :avatar_static, :bot, :id, :locked, :url)
|
expect(body_as_json[:partial_accounts][0].keys.map(&:to_sym)).to contain_exactly(:acct, :avatar, :avatar_static, :bot, :id, :locked, :url)
|
||||||
expect(body_as_json[:partial_accounts].pluck(:id)).to_not include(recent_account.id.to_s)
|
expect(body_as_json[:partial_accounts].pluck(:id)).to_not include(recent_account.id.to_s)
|
||||||
expect(body_as_json[:accounts].pluck(:id)).to include(recent_account.id.to_s)
|
expect(body_as_json[:accounts].pluck(:id)).to include(recent_account.id.to_s)
|
||||||
end
|
end
|
||||||
|
|
|
@ -229,13 +229,16 @@ RSpec.describe PostStatusService do
|
||||||
account = Fabricate(:account)
|
account = Fabricate(:account)
|
||||||
media = Fabricate(:media_attachment, account: Fabricate(:account))
|
media = Fabricate(:media_attachment, account: Fabricate(:account))
|
||||||
|
|
||||||
subject.call(
|
expect do
|
||||||
account,
|
subject.call(
|
||||||
text: 'test status update',
|
account,
|
||||||
media_ids: [media.id]
|
text: 'test status update',
|
||||||
|
media_ids: [media.id]
|
||||||
|
)
|
||||||
|
end.to raise_error(
|
||||||
|
Mastodon::ValidationError,
|
||||||
|
I18n.t('media_attachments.validations.not_found', ids: media.id)
|
||||||
)
|
)
|
||||||
|
|
||||||
expect(media.reload.status).to be_nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not allow attaching more files than configured limit' do
|
it 'does not allow attaching more files than configured limit' do
|
||||||
|
|
|
@ -228,7 +228,7 @@ RSpec.describe ResolveAccountService do
|
||||||
rescue ActiveRecord::RecordNotUnique
|
rescue ActiveRecord::RecordNotUnique
|
||||||
fail_occurred = true
|
fail_occurred = true
|
||||||
ensure
|
ensure
|
||||||
RedisConfiguration.pool.checkin if Thread.current[:redis]
|
RedisConnection.pool.checkin if Thread.current[:redis]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -39,11 +39,7 @@ RSpec.configure do |config|
|
||||||
end
|
end
|
||||||
|
|
||||||
def body_as_json
|
def body_as_json
|
||||||
json_str_to_hash(response.body)
|
response.parsed_body
|
||||||
end
|
|
||||||
|
|
||||||
def json_str_to_hash(str)
|
|
||||||
JSON.parse(str, symbolize_names: true)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def serialized_record_json(record, serializer, adapter: nil)
|
def serialized_record_json(record, serializer, adapter: nil)
|
||||||
|
|
|
@ -9,7 +9,9 @@ end
|
||||||
|
|
||||||
RSpec::Matchers.define :match_json_values do |values|
|
RSpec::Matchers.define :match_json_values do |values|
|
||||||
match do |string|
|
match do |string|
|
||||||
expect(json_str_to_hash(string))
|
parsed_json = JSON.parse(string, symbolize_names: true)
|
||||||
|
|
||||||
|
expect(parsed_json)
|
||||||
.to include(values)
|
.to include(values)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ class StreamingServerManager
|
||||||
@running_thread = Thread.new do
|
@running_thread = Thread.new do
|
||||||
Open3.popen2e(
|
Open3.popen2e(
|
||||||
{
|
{
|
||||||
'REDIS_NAMESPACE' => ENV.fetch('REDIS_NAMESPACE'),
|
'REDIS_NAMESPACE' => REDIS_CONFIGURATION.base[:namespace],
|
||||||
'DB_NAME' => "#{ENV.fetch('DB_NAME', 'mastodon')}_test#{ENV.fetch('TEST_ENV_NUMBER', '')}",
|
'DB_NAME' => "#{ENV.fetch('DB_NAME', 'mastodon')}_test#{ENV.fetch('TEST_ENV_NUMBER', '')}",
|
||||||
'RAILS_ENV' => ENV.fetch('RAILS_ENV', 'test'),
|
'RAILS_ENV' => ENV.fetch('RAILS_ENV', 'test'),
|
||||||
'NODE_ENV' => ENV.fetch('STREAMING_NODE_ENV', 'development'),
|
'NODE_ENV' => ENV.fetch('STREAMING_NODE_ENV', 'development'),
|
||||||
|
|
76
yarn.lock
76
yarn.lock
|
@ -1579,7 +1579,7 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@csstools/css-parser-algorithms@npm:^3.0.0, @csstools/css-parser-algorithms@npm:^3.0.1":
|
"@csstools/css-parser-algorithms@npm:^3.0.1":
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
resolution: "@csstools/css-parser-algorithms@npm:3.0.1"
|
resolution: "@csstools/css-parser-algorithms@npm:3.0.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -1588,14 +1588,14 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@csstools/css-tokenizer@npm:^3.0.0, @csstools/css-tokenizer@npm:^3.0.1":
|
"@csstools/css-tokenizer@npm:^3.0.1":
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
resolution: "@csstools/css-tokenizer@npm:3.0.1"
|
resolution: "@csstools/css-tokenizer@npm:3.0.1"
|
||||||
checksum: 10c0/c9ed4373e5731b5375ea9791590081019c04e95f08b46b272977e5e7b8c3d560affc62e82263cb8def1df1e57f0673140e7e16a14a5e7be04e6a234be088d1d3
|
checksum: 10c0/c9ed4373e5731b5375ea9791590081019c04e95f08b46b272977e5e7b8c3d560affc62e82263cb8def1df1e57f0673140e7e16a14a5e7be04e6a234be088d1d3
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@csstools/media-query-list-parser@npm:^3.0.0, @csstools/media-query-list-parser@npm:^3.0.1":
|
"@csstools/media-query-list-parser@npm:^3.0.1":
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
resolution: "@csstools/media-query-list-parser@npm:3.0.1"
|
resolution: "@csstools/media-query-list-parser@npm:3.0.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -3383,8 +3383,8 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@testing-library/react@npm:^16.0.0":
|
"@testing-library/react@npm:^16.0.0":
|
||||||
version: 16.0.0
|
version: 16.0.1
|
||||||
resolution: "@testing-library/react@npm:16.0.0"
|
resolution: "@testing-library/react@npm:16.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.12.5"
|
"@babel/runtime": "npm:^7.12.5"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -3398,7 +3398,7 @@ __metadata:
|
||||||
optional: true
|
optional: true
|
||||||
"@types/react-dom":
|
"@types/react-dom":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/297f97bf4722dad05f11d9cafd47d387dbdb096fea4b79b876c7466460f0f2e345b55b81b3e37fc81ed8185c528cb53dd8455ca1b6b019b229edf6c796f11c9f
|
checksum: 10c0/67d05dec5ad5a2e6f92b6a3234af785435c7bb62bdbf12f3bfc89c9bca0c871a189e88c4ba023ed4cea504704c87c6ac7e86e24a3962df6c521ae89b62f48ff7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -3757,13 +3757,13 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/pg@npm:^8.6.6":
|
"@types/pg@npm:^8.6.6":
|
||||||
version: 8.11.6
|
version: 8.11.8
|
||||||
resolution: "@types/pg@npm:8.11.6"
|
resolution: "@types/pg@npm:8.11.8"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node": "npm:*"
|
"@types/node": "npm:*"
|
||||||
pg-protocol: "npm:*"
|
pg-protocol: "npm:*"
|
||||||
pg-types: "npm:^4.0.1"
|
pg-types: "npm:^4.0.1"
|
||||||
checksum: 10c0/e68e057d9500b25cd776f4fcc547b4880c4f3b0c7b6e03c8a0e5e262b6189dd7a00f4edc8937ffc55a9f6a136a78d7e4a9b6bbe6a46122a95c134f7be66f6842
|
checksum: 10c0/040eb04edda338a13dccee47585b4479549fd54561e1bc3768690545adb8708a089b178e04fab9241935d7bad361314fc57af3ad87b391cfb9dc0895dd049763
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -3920,12 +3920,12 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
|
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
|
||||||
version: 18.3.4
|
version: 18.3.5
|
||||||
resolution: "@types/react@npm:18.3.4"
|
resolution: "@types/react@npm:18.3.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/prop-types": "npm:*"
|
"@types/prop-types": "npm:*"
|
||||||
csstype: "npm:^3.0.2"
|
csstype: "npm:^3.0.2"
|
||||||
checksum: 10c0/5c52e1e6f540cff21e3c2a5212066d02e005f6fb21e4a536a29097fae878db9f407cd7a4b43778f51359349c5f692e08bc77ddb5f5cecbfca9ca4d4e3c91a48e
|
checksum: 10c0/548b1d3d7c2f0242fbfdbbd658731b4ce69a134be072fa83e6ab516f2840402a3f20e3e7f72e95133b23d4880ef24a6d864050dc8e1f7c68f39fa87ca8445917
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -5131,13 +5131,13 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"axios@npm:^1.4.0":
|
"axios@npm:^1.4.0":
|
||||||
version: 1.7.5
|
version: 1.7.7
|
||||||
resolution: "axios@npm:1.7.5"
|
resolution: "axios@npm:1.7.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: "npm:^1.15.6"
|
follow-redirects: "npm:^1.15.6"
|
||||||
form-data: "npm:^4.0.0"
|
form-data: "npm:^4.0.0"
|
||||||
proxy-from-env: "npm:^1.1.0"
|
proxy-from-env: "npm:^1.1.0"
|
||||||
checksum: 10c0/1d5daeb28b3d1bb2a7b9f0743433c4bfbeaddc15461e50ebde487eec6c009af2515749d5261096dd430c90cd891bd310bcba5ec3967bae2033c4a307f58a6ad3
|
checksum: 10c0/4499efc89e86b0b49ffddc018798de05fab26e3bf57913818266be73279a6418c3ce8f9e934c7d2d707ab8c095e837fc6c90608fb7715b94d357720b5f568af7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -11359,8 +11359,8 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"lint-staged@npm:^15.0.0":
|
"lint-staged@npm:^15.0.0":
|
||||||
version: 15.2.9
|
version: 15.2.10
|
||||||
resolution: "lint-staged@npm:15.2.9"
|
resolution: "lint-staged@npm:15.2.10"
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: "npm:~5.3.0"
|
chalk: "npm:~5.3.0"
|
||||||
commander: "npm:~12.1.0"
|
commander: "npm:~12.1.0"
|
||||||
|
@ -11368,13 +11368,13 @@ __metadata:
|
||||||
execa: "npm:~8.0.1"
|
execa: "npm:~8.0.1"
|
||||||
lilconfig: "npm:~3.1.2"
|
lilconfig: "npm:~3.1.2"
|
||||||
listr2: "npm:~8.2.4"
|
listr2: "npm:~8.2.4"
|
||||||
micromatch: "npm:~4.0.7"
|
micromatch: "npm:~4.0.8"
|
||||||
pidtree: "npm:~0.6.0"
|
pidtree: "npm:~0.6.0"
|
||||||
string-argv: "npm:~0.3.2"
|
string-argv: "npm:~0.3.2"
|
||||||
yaml: "npm:~2.5.0"
|
yaml: "npm:~2.5.0"
|
||||||
bin:
|
bin:
|
||||||
lint-staged: bin/lint-staged.js
|
lint-staged: bin/lint-staged.js
|
||||||
checksum: 10c0/820c622378b62b826974af17f1747e2a4b0556e4fb99d101af89ad298d392ff079f580fdc576f16a27e975d726b95d73495fd524139402ff654c4649ef2f1a6a
|
checksum: 10c0/6ad7b41f5e87a84fa2eb1990080ea3c68a2f2031b4e81edcdc2a458cc878538eedb310e6f98ffd878a1287e1a52ac968e540ee8a0e96c247e04b0cbc36421cdd
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -11851,13 +11851,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"micromatch@npm:^4.0.4, micromatch@npm:^4.0.7, micromatch@npm:~4.0.7":
|
"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8, micromatch@npm:~4.0.8":
|
||||||
version: 4.0.7
|
version: 4.0.8
|
||||||
resolution: "micromatch@npm:4.0.7"
|
resolution: "micromatch@npm:4.0.8"
|
||||||
dependencies:
|
dependencies:
|
||||||
braces: "npm:^3.0.3"
|
braces: "npm:^3.0.3"
|
||||||
picomatch: "npm:^2.3.1"
|
picomatch: "npm:^2.3.1"
|
||||||
checksum: 10c0/58fa99bc5265edec206e9163a1d2cec5fabc46a5b473c45f4a700adce88c2520456ae35f2b301e4410fb3afb27e9521fb2813f6fc96be0a48a89430e0916a772
|
checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -14040,13 +14040,13 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.41":
|
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.41":
|
||||||
version: 8.4.41
|
version: 8.4.44
|
||||||
resolution: "postcss@npm:8.4.41"
|
resolution: "postcss@npm:8.4.44"
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid: "npm:^3.3.7"
|
nanoid: "npm:^3.3.7"
|
||||||
picocolors: "npm:^1.0.1"
|
picocolors: "npm:^1.0.1"
|
||||||
source-map-js: "npm:^1.2.0"
|
source-map-js: "npm:^1.2.0"
|
||||||
checksum: 10c0/c1828fc59e7ec1a3bf52b3a42f615dba53c67960ed82a81df6441b485fe43c20aba7f4e7c55425762fd99c594ecabbaaba8cf5b30fd79dfec5b52a9f63a2d690
|
checksum: 10c0/53c33338261a3d4f4198f8893e9dfe8b828d8d9186142ee85f02d228f04245c5bbe31239411a357a556ad20ed96f28db24d0921d63edc428fdc9133289371a1d
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -16646,12 +16646,12 @@ __metadata:
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"stylelint@npm:^16.0.2":
|
"stylelint@npm:^16.0.2":
|
||||||
version: 16.8.2
|
version: 16.9.0
|
||||||
resolution: "stylelint@npm:16.8.2"
|
resolution: "stylelint@npm:16.9.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@csstools/css-parser-algorithms": "npm:^3.0.0"
|
"@csstools/css-parser-algorithms": "npm:^3.0.1"
|
||||||
"@csstools/css-tokenizer": "npm:^3.0.0"
|
"@csstools/css-tokenizer": "npm:^3.0.1"
|
||||||
"@csstools/media-query-list-parser": "npm:^3.0.0"
|
"@csstools/media-query-list-parser": "npm:^3.0.1"
|
||||||
"@csstools/selector-specificity": "npm:^4.0.0"
|
"@csstools/selector-specificity": "npm:^4.0.0"
|
||||||
"@dual-bundle/import-meta-resolve": "npm:^4.1.0"
|
"@dual-bundle/import-meta-resolve": "npm:^4.1.0"
|
||||||
balanced-match: "npm:^2.0.0"
|
balanced-match: "npm:^2.0.0"
|
||||||
|
@ -16673,7 +16673,7 @@ __metadata:
|
||||||
known-css-properties: "npm:^0.34.0"
|
known-css-properties: "npm:^0.34.0"
|
||||||
mathml-tag-names: "npm:^2.1.3"
|
mathml-tag-names: "npm:^2.1.3"
|
||||||
meow: "npm:^13.2.0"
|
meow: "npm:^13.2.0"
|
||||||
micromatch: "npm:^4.0.7"
|
micromatch: "npm:^4.0.8"
|
||||||
normalize-path: "npm:^3.0.0"
|
normalize-path: "npm:^3.0.0"
|
||||||
picocolors: "npm:^1.0.1"
|
picocolors: "npm:^1.0.1"
|
||||||
postcss: "npm:^8.4.41"
|
postcss: "npm:^8.4.41"
|
||||||
|
@ -16684,13 +16684,13 @@ __metadata:
|
||||||
resolve-from: "npm:^5.0.0"
|
resolve-from: "npm:^5.0.0"
|
||||||
string-width: "npm:^4.2.3"
|
string-width: "npm:^4.2.3"
|
||||||
strip-ansi: "npm:^7.1.0"
|
strip-ansi: "npm:^7.1.0"
|
||||||
supports-hyperlinks: "npm:^3.0.0"
|
supports-hyperlinks: "npm:^3.1.0"
|
||||||
svg-tags: "npm:^1.0.0"
|
svg-tags: "npm:^1.0.0"
|
||||||
table: "npm:^6.8.2"
|
table: "npm:^6.8.2"
|
||||||
write-file-atomic: "npm:^5.0.1"
|
write-file-atomic: "npm:^5.0.1"
|
||||||
bin:
|
bin:
|
||||||
stylelint: bin/stylelint.mjs
|
stylelint: bin/stylelint.mjs
|
||||||
checksum: 10c0/898cde9b5d981f249133df709458eebf2af0a525e72410ddfafd76a7308f7da493578b6a909c593cc70061556b9eda1fed4f477385ee615435f0996d9e18d8df
|
checksum: 10c0/d3ff9c8945c56b04a2fa16ec33d163325496d5db94b6fcb5adf74c76f7f794ac992888273f9a3317652ba8b6195168b2ffff382ca2a667a241e2ace8c9505ae2
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -16744,13 +16744,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"supports-hyperlinks@npm:^3.0.0":
|
"supports-hyperlinks@npm:^3.1.0":
|
||||||
version: 3.0.0
|
version: 3.1.0
|
||||||
resolution: "supports-hyperlinks@npm:3.0.0"
|
resolution: "supports-hyperlinks@npm:3.1.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
has-flag: "npm:^4.0.0"
|
has-flag: "npm:^4.0.0"
|
||||||
supports-color: "npm:^7.0.0"
|
supports-color: "npm:^7.0.0"
|
||||||
checksum: 10c0/36aaa55e67645dded8e0f846fd81d7dd05ce82ea81e62347f58d86213577eb627b2b45298656ce7a70e7155e39f071d0d3f83be91e112aed801ebaa8db1ef1d0
|
checksum: 10c0/78cc3e17eb27e6846fa355a8ebf343befe36272899cd409e45317a06c1997e95c23ff99d91080a517bd8c96508d4fa456e6ceb338c02ba5d7544277dbec0f10f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue