Merge branch 'main' into glitch-soc/merge-upstream

Conflicts:
- `app/services/remove_status_service.rb`:
  Conflict due to glitch-soc having extra code for a proper direct visibility
  timeline, in a part of the code upstream refactored.
  Restored glitch-soc's extra code in the refactored bit.
main
Claire 3 years ago
commit 040b7d37a4

@ -7,7 +7,7 @@ gem 'pkg-config', '~> 1.4'
gem 'rexml', '~> 3.2'
gem 'puma', '~> 5.6'
gem 'rails', '~> 6.1.5'
gem 'rails', '~> 6.1.6'
gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.3'
@ -18,7 +18,7 @@ gem 'makara', '~> 0.5'
gem 'pghero', '~> 2.8'
gem 'dotenv-rails', '~> 2.7'
gem 'aws-sdk-s3', '~> 1.113', require: false
gem 'aws-sdk-s3', '~> 1.114', require: false
gem 'fog-core', '<= 2.1.0'
gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.1'

@ -1,40 +1,40 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (6.1.5.1)
actionpack (= 6.1.5.1)
activesupport (= 6.1.5.1)
actioncable (6.1.6)
actionpack (= 6.1.6)
activesupport (= 6.1.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.5.1)
actionpack (= 6.1.5.1)
activejob (= 6.1.5.1)
activerecord (= 6.1.5.1)
activestorage (= 6.1.5.1)
activesupport (= 6.1.5.1)
actionmailbox (6.1.6)
actionpack (= 6.1.6)
activejob (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
mail (>= 2.7.1)
actionmailer (6.1.5.1)
actionpack (= 6.1.5.1)
actionview (= 6.1.5.1)
activejob (= 6.1.5.1)
activesupport (= 6.1.5.1)
actionmailer (6.1.6)
actionpack (= 6.1.6)
actionview (= 6.1.6)
activejob (= 6.1.6)
activesupport (= 6.1.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.5.1)
actionview (= 6.1.5.1)
activesupport (= 6.1.5.1)
actionpack (6.1.6)
actionview (= 6.1.6)
activesupport (= 6.1.6)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.1.5.1)
actionpack (= 6.1.5.1)
activerecord (= 6.1.5.1)
activestorage (= 6.1.5.1)
activesupport (= 6.1.5.1)
actiontext (6.1.6)
actionpack (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
nokogiri (>= 1.8.5)
actionview (6.1.5.1)
activesupport (= 6.1.5.1)
actionview (6.1.6)
activesupport (= 6.1.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@ -45,22 +45,22 @@ GEM
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
active_record_query_trace (1.8)
activejob (6.1.5.1)
activesupport (= 6.1.5.1)
activejob (6.1.6)
activesupport (= 6.1.6)
globalid (>= 0.3.6)
activemodel (6.1.5.1)
activesupport (= 6.1.5.1)
activerecord (6.1.5.1)
activemodel (= 6.1.5.1)
activesupport (= 6.1.5.1)
activestorage (6.1.5.1)
actionpack (= 6.1.5.1)
activejob (= 6.1.5.1)
activerecord (= 6.1.5.1)
activesupport (= 6.1.5.1)
activemodel (6.1.6)
activesupport (= 6.1.6)
activerecord (6.1.6)
activemodel (= 6.1.6)
activesupport (= 6.1.6)
activestorage (6.1.6)
actionpack (= 6.1.6)
activejob (= 6.1.6)
activerecord (= 6.1.6)
activesupport (= 6.1.6)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.5.1)
activesupport (6.1.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
@ -81,7 +81,7 @@ GEM
attr_required (1.0.1)
awrence (1.1.1)
aws-eventstream (1.2.0)
aws-partitions (1.582.0)
aws-partitions (1.587.0)
aws-sdk-core (3.130.2)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0)
@ -90,7 +90,7 @@ GEM
aws-sdk-kms (1.56.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.113.2)
aws-sdk-s3 (1.114.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@ -376,7 +376,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.17.0)
loofah (2.18.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
@ -406,7 +406,7 @@ GEM
net-ssh (>= 2.6.5, < 7.0.0)
net-ssh (6.1.0)
nio4r (2.5.8)
nokogiri (1.13.4)
nokogiri (1.13.6)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nsa (0.2.8)
@ -491,20 +491,20 @@ GEM
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (6.1.5.1)
actioncable (= 6.1.5.1)
actionmailbox (= 6.1.5.1)
actionmailer (= 6.1.5.1)
actionpack (= 6.1.5.1)
actiontext (= 6.1.5.1)
actionview (= 6.1.5.1)
activejob (= 6.1.5.1)
activemodel (= 6.1.5.1)
activerecord (= 6.1.5.1)
activestorage (= 6.1.5.1)
activesupport (= 6.1.5.1)
rails (6.1.6)
actioncable (= 6.1.6)
actionmailbox (= 6.1.6)
actionmailer (= 6.1.6)
actionpack (= 6.1.6)
actiontext (= 6.1.6)
actionview (= 6.1.6)
activejob (= 6.1.6)
activemodel (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
bundler (>= 1.15.0)
railties (= 6.1.5.1)
railties (= 6.1.6)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@ -520,9 +520,9 @@ GEM
railties (>= 6.0.0, < 7)
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
railties (6.1.5.1)
actionpack (= 6.1.5.1)
activesupport (= 6.1.5.1)
railties (6.1.6)
actionpack (= 6.1.6)
activesupport (= 6.1.6)
method_source
rake (>= 12.2)
thor (~> 1.0)
@ -732,7 +732,7 @@ DEPENDENCIES
active_record_query_trace (~> 1.8)
addressable (~> 2.8)
annotate (~> 3.2)
aws-sdk-s3 (~> 1.113)
aws-sdk-s3 (~> 1.114)
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
@ -812,7 +812,7 @@ DEPENDENCIES
rack (~> 2.2.3)
rack-attack (~> 6.6)
rack-cors (~> 1.1)
rails (~> 6.1.5)
rails (~> 6.1.6)
rails-controller-testing (~> 1.0)
rails-i18n (~> 6.0)
rails-settings-cached (~> 0.6)

@ -4,6 +4,7 @@ class MediaProxyController < ApplicationController
include RoutingHelper
include Authorization
include Redisable
include Lockable
skip_before_action :store_current_location
skip_before_action :require_functional!
@ -16,14 +17,10 @@ class MediaProxyController < ApplicationController
rescue_from HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError, with: :internal_server_error
def show
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
@media_attachment = MediaAttachment.remote.attached.find(params[:id])
authorize @media_attachment.status, :show?
redownload! if @media_attachment.needs_redownload? && !reject_media?
else
raise Mastodon::RaceConditionError
end
with_lock("media_download:#{params[:id]}") do
@media_attachment = MediaAttachment.remote.attached.find(params[:id])
authorize @media_attachment.status, :show?
redownload! if @media_attachment.needs_redownload? && !reject_media?
end
redirect_to full_asset_url(@media_attachment.file.url(version))
@ -45,10 +42,6 @@ class MediaProxyController < ApplicationController
end
end
def lock_options
{ redis: redis, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds }
end
def reject_media?
DomainBlock.reject_media?(@media_attachment.account.domain)
end

@ -3,6 +3,7 @@
class Settings::ExportsController < Settings::BaseController
include Authorization
include Redisable
include Lockable
skip_before_action :require_functional!
@ -14,21 +15,13 @@ class Settings::ExportsController < Settings::BaseController
def create
backup = nil
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
authorize :backup, :create?
backup = current_user.backups.create!
else
raise Mastodon::RaceConditionError
end
with_lock("backup:#{current_user.id}") do
authorize :backup, :create?
backup = current_user.backups.create!
end
BackupWorker.perform_async(backup.id)
redirect_to settings_export_path
end
def lock_options
{ redis: redis, key: "backup:#{current_user.id}" }
end
end

@ -20,12 +20,12 @@
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows.empty": "Die gebruiker volg nie tans iemand nie.",
"account.follows_you": "Volg jou",
"account.hide_reblogs": "Versteek hupstoot vanaf @{name}",
"account.joined": "{date} aangesluit",
"account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.",
"account.media": "Media",
"account.mention": "Noem @{name}",
"account.moved_to": "{name} is geskuif na:",
@ -43,7 +43,7 @@
"account.unblock_domain": "Ontblok domein {domain}",
"account.unblock_short": "Ontblok",
"account.unendorse": "Moenie beklemtoon op profiel nie",
"account.unfollow": "Unfollow",
"account.unfollow": "Ontvolg",
"account.unmute": "Ontdemp @{name}",
"account.unmute_notifications": "Ontdemp kennisgewings vanaf @{name}",
"account.unmute_short": "Ontdemp",
@ -63,50 +63,50 @@
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Probeer weer",
"bundle_column_error.title": "Network error",
"bundle_column_error.title": "Netwerk fout",
"bundle_modal_error.close": "Close",
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.",
"bundle_modal_error.retry": "Probeer weer",
"column.blocks": "Blocked users",
"column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.bookmarks": "Boekmerke",
"column.community": "Plaaslike tydlyn",
"column.direct": "Direkte boodskappe",
"column.directory": "Browse profiles",
"column.domain_blocks": "Blocked domains",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.directory": "Blaai deur profiele",
"column.domain_blocks": "Geblokte domeine",
"column.favourites": "Gunstelinge",
"column.follow_requests": "Volgversoeke",
"column.home": "Tuis",
"column.lists": "Lyste",
"column.mutes": "Gedempte gebruikers",
"column.notifications": "Kennisgewings",
"column.pins": "Pinned toot",
"column.public": "Federated timeline",
"column.public": "Gefedereerde tydlyn",
"column_back_button.label": "Terug",
"column_header.hide_settings": "Versteek instellings",
"column_header.moveLeft_settings": "Skuif kolom na links",
"column_header.moveRight_settings": "Skuif kolom na regs",
"column_header.pin": "Pin",
"column_header.pin": "Pen vas",
"column_header.show_settings": "Wys instellings",
"column_header.unpin": "Unpin",
"column_header.unpin": "Ontpen",
"column_subheading.settings": "Instellings",
"community.column_settings.local_only": "Slegs plaaslik",
"community.column_settings.media_only": "Media only",
"community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"community.column_settings.remote_only": "Slegs afgeleë",
"compose_form.direct_message_warning_learn_more": "Leer meer",
"compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige gevaarlike inligting oor Mastodon deel nie.",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.lock_disclaimer.lock": "gesluit",
"compose_form.placeholder": "What is on your mind?",
"compose_form.poll.add_option": "Add a choice",
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.poll.add_option": "Voeg 'n keuse by",
"compose_form.poll.duration": "Duur van peiling",
"compose_form.poll.option_placeholder": "Keuse {number}",
"compose_form.poll.remove_option": "Verwyder hierdie keuse",
"compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses",
"compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse",
"compose_form.publish": "Toet",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.save_changes": "Stoor veranderinge",
"compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
"compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -93,7 +93,7 @@
"community.column_settings.media_only": "الوسائط فقط",
"community.column_settings.remote_only": "عن بُعد فقط",
"compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.",
"compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.",
"compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).",
"compose_form.lock_disclaimer.lock": "مُقفَل",
@ -168,7 +168,7 @@
"empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
"empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.explore_statuses": "ليس هناك ما هو متداوَل الآن. عد في وقت لاحق!",
"empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.",
"empty_column.favourites": "لم يقم أي أحد بالإعجاب بهذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.",
"empty_column.follow_recommendations": "يبدو أنه لا يمكن إنشاء أي اقتراحات لك. يمكنك البحث عن أشخاص قد تعرفهم أو استكشاف الوسوم الرائجة.",
@ -264,6 +264,8 @@
"lightbox.expand": "توسيع مربع عرض الصور",
"lightbox.next": "التالي",
"lightbox.previous": "العودة",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "أضف إلى القائمة",
"lists.account.remove": "احذف من القائمة",
"lists.delete": "احذف القائمة",
@ -372,7 +374,7 @@
"privacy.private.short": "للمتابِعين فقط",
"privacy.public.long": "مرئي للكل",
"privacy.public.short": "للعامة",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف",
"privacy.unlisted.short": "غير مدرج",
"refresh": "أنعِش",
"regeneration_indicator.label": "جارٍ التحميل…",
@ -395,7 +397,7 @@
"report.categories.spam": "مزعج",
"report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم",
"report.category.subtitle": "اختر أفضل تطابق",
"report.category.title": "Tell us what's going on with this {type}",
"report.category.title": "وضح لنا ما أمر {type}",
"report.category.title_account": "ملف تعريفي",
"report.category.title_status": "منشور",
"report.close": "تم",
@ -411,9 +413,9 @@
"report.reasons.other": "شيء آخر",
"report.reasons.other_description": "لا تندرج هذه المشكلة ضمن فئات أخرى",
"report.reasons.spam": "إنها رسالة مزعجة",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.spam_description": "روابط خبيثة أو تفاعل كاذب أو ردود متكررة",
"report.reasons.violation": "ينتهك قواعد الخادم",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.reasons.violation_description": "تعلم أنه ينتهك قواعد محددة",
"report.rules.subtitle": "اختر كل ما ينطبق",
"report.rules.title": "ما هي القواعد المنتهكة؟",
"report.statuses.subtitle": "اختر كل ما ينطبق",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Siguiente",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Amestar a la llista",
"lists.account.remove": "Desaniciar de la llista",
"lists.delete": "Desaniciar la llista",

@ -264,6 +264,8 @@
"lightbox.expand": "Разгъване на полето за преглед на изображение",
"lightbox.next": "Напред",
"lightbox.previous": "Назад",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Добавяне към списък",
"lists.account.remove": "Премахване от списък",
"lists.delete": "Изтриване на списък",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "পরবর্তী",
"lightbox.previous": "পূর্ববর্তী",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "তালিকাতে যুক্ত করতে",
"lists.account.remove": "তালিকা থেকে বাদ দিতে",
"lists.delete": "তালিকা মুছে ফেলতে",

@ -264,6 +264,8 @@
"lightbox.expand": "Ledanaat boest hewel ar skeudenn",
"lightbox.next": "Da-heul",
"lightbox.previous": "A-raok",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Ouzhpennañ d'al listenn",
"lists.account.remove": "Lemel kuit eus al listenn",
"lists.delete": "Dilemel al listenn",

@ -138,7 +138,7 @@
"confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?",
"conversation.delete": "Elimina la conversa",
"conversation.mark_as_read": "Marca com a llegida",
"conversation.open": "Veure conversa",
"conversation.open": "Mostra la conversa",
"conversation.with": "Amb {names}",
"directory.federated": "Del fedivers conegut",
"directory.local": "Només de {domain}",
@ -264,6 +264,8 @@
"lightbox.expand": "Amplia el quadre de visualització de limatge",
"lightbox.next": "Següent",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Afegeix a la llista",
"lists.account.remove": "Elimina de la llista",
"lists.delete": "Esborra la llista",
@ -463,7 +465,7 @@
"status.mention": "Esmenta @{name}",
"status.more": "Més",
"status.mute": "Silencia @{name}",
"status.mute_conversation": "Silencia conversació",
"status.mute_conversation": "Silencia la conversa",
"status.open": "Amplia la publicació",
"status.pin": "Fixa en el perfil",
"status.pinned": "Publicació fixada",

@ -18,12 +18,12 @@
"account.followers": "شوێنکەوتووان",
"account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە",
"account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}",
"account.following": "Following",
"account.following": "دواکەوتن",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.",
"account.follows_you": "شوێنکەوتووەکانت",
"account.hide_reblogs": "داشاردنی بووستەکان لە @{name}",
"account.joined": "Joined {date}",
"account.joined": "بەشداری {date}",
"account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە",
"account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.",
"account.media": "میدیا",
@ -41,18 +41,18 @@
"account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.unblock": "@{name} لاببە",
"account.unblock_domain": "کردنەوەی دۆمەینی {domain}",
"account.unblock_short": "Unblock",
"account.unblock_short": "لابردنی بەربەست",
"account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە",
"account.unfollow": "بەدوادانەچو",
"account.unmute": "بێدەنگکردنی @{name}",
"account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}",
"account.unmute_short": "Unmute",
"account.unmute_short": "بێدەنگی مەکە",
"account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.cohort": "Sign-up month",
"admin.dashboard.retention.cohort_size": "New users",
"admin.dashboard.retention.cohort": "چوونەژوورەوەی مانگانە",
"admin.dashboard.retention.cohort_size": "ئەندامی نوێ",
"alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.",
"alert.rate_limited.title": "ڕێژەی سنووردار",
"alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.",
@ -70,7 +70,7 @@
"column.blocks": "بەکارهێنەرە بلۆککراوەکان",
"column.bookmarks": "نیشانەکان",
"column.community": "هێڵی کاتی ناوخۆیی",
"column.direct": "Direct messages",
"column.direct": "نامە ڕاستەوخۆ",
"column.directory": "گەڕان لە پرۆفایلەکان",
"column.domain_blocks": "دۆمەینە داخراوەکان",
"column.favourites": "دڵخوازترینەکان",
@ -106,7 +106,7 @@
"compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک",
"compose_form.publish": "توت",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.save_changes": "پاشکەوتی گۆڕانکاریەکان",
"compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار",
"compose_form.sensitive.marked": "وادەی کۆتایی",
"compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە",
@ -160,8 +160,8 @@
"emoji_button.search_results": "ئەنجامەکانی گەڕان",
"emoji_button.symbols": "هێماکان",
"emoji_button.travel": "گەشت & شوێنەکان",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "لێرە هیچ توتەک نییە!",
"empty_column.account_suspended": "هەژمار ڕاگیرا",
"empty_column.account_timeline": "لێرە هیچ نووسراوە نییە!",
"empty_column.account_unavailable": "پرۆفایل بەردەست نیە",
"empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.",
"empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.",
@ -175,7 +175,7 @@
"empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.",
"empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.",
"empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.",
"empty_column.home.suggestions": "See some suggestions",
"empty_column.home.suggestions": "چەند پێشنیارێک ببینە",
"empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.",
"empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.",
"empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.",
@ -187,15 +187,15 @@
"error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.",
"errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
"errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
"explore.search_results": "Search results",
"explore.suggested_follows": "For you",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
"explore.trending_tags": "Hashtags",
"follow_recommendations.done": "Done",
"follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
"follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
"explore.search_results": "ئەنجامەکانی گەڕان",
"explore.suggested_follows": "بۆ تۆ",
"explore.title": "گەڕان",
"explore.trending_links": "هەواڵەکان",
"explore.trending_statuses": "نووسراوەکان",
"explore.trending_tags": "هاشتاگ",
"follow_recommendations.done": "تەواو",
"follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.",
"follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!",
"follow_request.authorize": "ده‌سه‌ڵاتپێدراو",
"follow_request.reject": "ڕەتکردنەوە",
"follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.",
@ -231,7 +231,7 @@
"keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان",
"keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق",
"keyboard_shortcuts.description": "وه‌سف",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان",
"keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا",
"keyboard_shortcuts.enter": "بۆ کردنەوەی توت",
"keyboard_shortcuts.favourite": "بۆ دڵخواز",
@ -264,6 +264,8 @@
"lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە",
"lightbox.next": "داهاتوو",
"lightbox.previous": "پێشوو",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "زیادکردن بۆ لیست",
"lists.account.remove": "لابردن لە لیست",
"lists.delete": "سڕینەوەی لیست",
@ -271,9 +273,9 @@
"lists.edit.submit": "گۆڕینی ناونیشان",
"lists.new.create": "زیادکردنی لیست",
"lists.new.title_placeholder": "ناونیشانی لیستی نوێ",
"lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one",
"lists.replies_policy.followed": "هەر بەکارهێنەرێکی بەدواکەوتوو",
"lists.replies_policy.list": "ئەندامانی لیستەکە",
"lists.replies_policy.none": "هیچکەس",
"lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:",
"lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
"lists.subheading": "لیستەکانت",
@ -290,11 +292,11 @@
"navigation_bar.bookmarks": "نیشانکراوەکان",
"navigation_bar.community_timeline": "دەمنامەی ناوخۆیی",
"navigation_bar.compose": "نووسینی توتی نوێ",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "نامە ڕاستەوخۆ",
"navigation_bar.discover": "دۆزینەوە",
"navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان",
"navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە",
"navigation_bar.explore": "Explore",
"navigation_bar.explore": "گەڕان",
"navigation_bar.favourites": "دڵخوازەکان",
"navigation_bar.filters": "وشە کپەکان",
"navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە",
@ -309,7 +311,7 @@
"navigation_bar.preferences": "پەسەندەکان",
"navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک",
"navigation_bar.security": "ئاسایش",
"notification.admin.sign_up": "{name} signed up",
"notification.admin.sign_up": "{name} تۆمارکرا",
"notification.favourite": "{name} نووسراوەکەتی پەسەند کرد",
"notification.follow": "{name} دوای تۆ کەوت",
"notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت",
@ -318,15 +320,15 @@
"notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات",
"notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند",
"notification.status": "{name} تازە بڵاوکرایەوە",
"notification.update": "{name} edited a post",
"notification.update": "{name} پۆستێکی دەستکاریکرد",
"notifications.clear": "ئاگانامەکان بسڕیەوە",
"notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?",
"notifications.column_settings.admin.sign_up": "New sign-ups:",
"notifications.column_settings.admin.sign_up": "چوونەژوورەوەی نوێ:",
"notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی",
"notifications.column_settings.favourite": "دڵخوازترین:",
"notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە",
"notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا",
"notifications.column_settings.filter_bar.show_bar": "Show filter bar",
"notifications.column_settings.filter_bar.show_bar": "نیشاندانی شریتی پاڵافتن",
"notifications.column_settings.follow": "شوێنکەوتوانی نوێ:",
"notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:",
"notifications.column_settings.mention": "ئاماژەکان:",
@ -338,7 +340,7 @@
"notifications.column_settings.status": "توتەکانی نوێ:",
"notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "دەستکاری:",
"notifications.filter.all": "هەموو",
"notifications.filter.boosts": "دووبارەتوتەکان",
"notifications.filter.favourites": "دڵخوازەکان",
@ -389,30 +391,30 @@
"relative_time.seconds": "{number}کات",
"relative_time.today": "ئیمڕۆ",
"reply_indicator.cancel": "هەڵوەشاندنەوه",
"report.block": "Block",
"report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
"report.categories.other": "Other",
"report.categories.spam": "Spam",
"report.categories.violation": "Content violates one or more server rules",
"report.category.subtitle": "Choose the best match",
"report.category.title": "Tell us what's going on with this {type}",
"report.category.title_account": "profile",
"report.category.title_status": "post",
"report.close": "Done",
"report.comment.title": "Is there anything else you think we should know?",
"report.block": "بلۆک",
"report.block_explanation": "تۆ پۆستەکانیان نابینیت. ئەوان ناتوانن بابەتەکانتان ببینن یان شوێنتان بکەون. ئەوان دەتوانن بڵێن کە بەربەستکراون.",
"report.categories.other": "هی تر",
"report.categories.spam": "سپام",
"report.categories.violation": "ناوەڕۆک یەک یان زیاتر لە یاساکانی سێرڤەر پێشێل دەکات",
"report.category.subtitle": "باشترین هاوتا هەڵبژێرە",
"report.category.title": "پێمان بڵێ بە {type} چی ڕوودەدات",
"report.category.title_account": "پرۆفایل",
"report.category.title_status": "پۆست",
"report.close": "تەواو",
"report.comment.title": "ئایا هیچ شتێکی تر هەیە کە پێت وایە ئێمە دەبێت بزانین?",
"report.forward": "ناردن بۆ {target}",
"report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?",
"report.mute": "Mute",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.next": "Next",
"report.mute": "بێدەنگ",
"report.mute_explanation": "تۆ پۆستەکانیان نابینیت. ئەوان هێشتا دەتوانن شوێنتان بکەون و پۆستەکانتان ببینن و نازانن کە ئەوان بێ دەنگن.",
"report.next": "دواتر",
"report.placeholder": "سەرنجەکانی زیاتر",
"report.reasons.dislike": "I don't like it",
"report.reasons.dislike_description": "It is not something you want to see",
"report.reasons.other": "It's something else",
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "It violates server rules",
"report.reasons.dislike": "حەزم لێی نییە",
"report.reasons.dislike_description": "ئەوە شتێک نیە کە دەتەوێت بیبینیت",
"report.reasons.other": "شتێکی ترە",
"report.reasons.other_description": "کێشەکە ناگونجێت بۆ هاوپۆلەکانی تر",
"report.reasons.spam": "ئەوە سپامە",
"report.reasons.spam_description": "لینکە خراپەکان، بەشداری ساختە، یان وەڵامدانەوەی دووبارە",
"report.reasons.violation": "یاساکانی سێرڤەر پێشێل دەکات",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Select all that apply",
"report.rules.title": "Which rules are being violated?",
@ -434,7 +436,7 @@
"search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان",
"search_popout.tips.user": "بەکارهێنەر",
"search_results.accounts": "خەڵک",
"search_results.all": "All",
"search_results.all": "هەموو",
"search_results.hashtags": "هەشتاگ",
"search_results.nothing_found": "Could not find anything for these search terms",
"search_results.statuses": "توتەکان",
@ -450,8 +452,8 @@
"status.delete": "سڕینەوە",
"status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری",
"status.direct": "پەیامی ڕاستەوخۆ @{name}",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edit": "دەستکاری",
"status.edited": "بەشداری {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "نیشتەجێ بکە",
"status.favourite": "دڵخواز",

@ -264,6 +264,8 @@
"lightbox.expand": "Ingrandà a finestra d'affissera di i ritratti",
"lightbox.next": "Siguente",
"lightbox.previous": "Pricidente",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Aghjunghje à a lista",
"lists.account.remove": "Toglie di a lista",
"lists.delete": "Toglie a lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Ukázat obrázek v plné velikosti",
"lightbox.next": "Další",
"lightbox.previous": "Předchozí",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Přidat do seznamu",
"lists.account.remove": "Odebrat ze seznamu",
"lists.delete": "Smazat seznam",

@ -264,6 +264,8 @@
"lightbox.expand": "Ehangu blwch gweld delwedd",
"lightbox.next": "Nesaf",
"lightbox.previous": "Blaenorol",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Ychwanegwch at restr",
"lists.account.remove": "Dileu o'r rhestr",
"lists.delete": "Dileu rhestr",

@ -264,6 +264,8 @@
"lightbox.expand": "Udvid billedevisningsfelt",
"lightbox.next": "Næste",
"lightbox.previous": "Forrige",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Føj til liste",
"lists.account.remove": "Fjern fra liste",
"lists.delete": "Slet liste",

@ -264,6 +264,8 @@
"lightbox.expand": "Bildansicht erweitern",
"lightbox.next": "Weiter",
"lightbox.previous": "Zurück",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Zur Liste hinzufügen",
"lists.account.remove": "Von der Liste entfernen",
"lists.delete": "Liste löschen",

@ -75,6 +75,14 @@
{
"defaultMessage": "Unmute notifications from @{name}",
"id": "account.unmute_notifications"
},
{
"defaultMessage": "Mute @{name}",
"id": "account.mute"
},
{
"defaultMessage": "Block @{name}",
"id": "account.block"
}
],
"path": "app/javascript/mastodon/components/account.json"
@ -787,6 +795,19 @@
],
"path": "app/javascript/mastodon/features/account_timeline/components/header.json"
},
{
"descriptors": [
{
"defaultMessage": "This profile has been hidden by the moderators of your server.",
"id": "limited_account_hint.title"
},
{
"defaultMessage": "Show profile anyway",
"id": "limited_account_hint.action"
}
],
"path": "app/javascript/mastodon/features/account_timeline/components/limited_account_hint.json"
},
{
"descriptors": [
{
@ -1888,6 +1909,10 @@
"defaultMessage": "Followers",
"id": "timeline_hint.resources.followers"
},
{
"defaultMessage": "Account suspended",
"id": "empty_column.account_suspended"
},
{
"defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable"
@ -1905,6 +1930,10 @@
"defaultMessage": "Follows",
"id": "timeline_hint.resources.follows"
},
{
"defaultMessage": "Account suspended",
"id": "empty_column.account_suspended"
},
{
"defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable"

@ -264,6 +264,8 @@
"lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας",
"lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Πρόσθεσε στη λίστα",
"lists.account.remove": "Βγάλε από τη λίστα",
"lists.delete": "Διαγραφή λίστας",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -268,6 +268,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -70,7 +70,7 @@
"column.blocks": "Blokitaj uzantoj",
"column.bookmarks": "Legosignoj",
"column.community": "Loka templinio",
"column.direct": "Direct messages",
"column.direct": "Rektaj mesaĝoj",
"column.directory": "Trarigardi profilojn",
"column.domain_blocks": "Blokitaj domajnoj",
"column.favourites": "Stelumoj",
@ -264,6 +264,8 @@
"lightbox.expand": "Pligrandigi bildan vidkeston",
"lightbox.next": "Sekva",
"lightbox.previous": "Antaŭa",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Aldoni al la listo",
"lists.account.remove": "Forigi de la listo",
"lists.delete": "Forigi la liston",
@ -290,7 +292,7 @@
"navigation_bar.bookmarks": "Legosignoj",
"navigation_bar.community_timeline": "Loka templinio",
"navigation_bar.compose": "Skribi novan mesaĝon",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "Rektaj mesaĝoj",
"navigation_bar.discover": "Esplori",
"navigation_bar.domain_blocks": "Blokitaj domajnoj",
"navigation_bar.edit_profile": "Redakti profilon",
@ -370,7 +372,7 @@
"privacy.direct.short": "Direct",
"privacy.private.long": "Videbla nur al viaj sekvantoj",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.public.long": "Videbla por ĉiuj",
"privacy.public.short": "Publika",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "Nelistigita",
@ -403,7 +405,7 @@
"report.forward": "Plusendi al {target}",
"report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?",
"report.mute": "Silentigi",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.mute_explanation": "Vi ne vidos iliajn afiŝojn. Ili ankoraŭ povas sekvi vin kaj vidi viajn afiŝojn, kaj ne scios ke si estas silentigitaj.",
"report.next": "Sekva",
"report.placeholder": "Pliaj komentoj",
"report.reasons.dislike": "Mi ne ŝatas ĝin",
@ -415,7 +417,7 @@
"report.reasons.violation": "Ĝi malrespektas servilajn regulojn",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Elektu ĉiujn, kiuj validas",
"report.rules.title": "Which rules are being violated?",
"report.rules.title": "Kiuj reguloj estas malobservataj?",
"report.statuses.subtitle": "Elektu ĉiujn, kiuj validas",
"report.statuses.title": "Are there any posts that back up this report?",
"report.submit": "Sendi",

@ -18,7 +18,7 @@
"account.followers": "Seguidores",
"account.followers.empty": "Todavía nadie sigue a este usuario.",
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
"account.following": "Siguiendo",
"account.following": "Seguimientos",
"account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
"account.follows.empty": "Todavía este usuario no sigue a nadie.",
"account.follows_you": "Te sigue",
@ -264,6 +264,8 @@
"lightbox.expand": "Expandir cuadro de vista de imagen",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Agregar a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Eliminar lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expandir cuadro de visualización de imagen",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Borrar lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expandir cuadro de visualización de imagen",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Borrar lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Järgmine",
"lightbox.previous": "Eelmine",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Lisa nimistusse",
"lists.account.remove": "Eemalda nimistust",
"lists.delete": "Kustuta nimistu",

@ -264,6 +264,8 @@
"lightbox.expand": "Zabaldu irudia ikusteko kaxa",
"lightbox.next": "Hurrengoa",
"lightbox.previous": "Aurrekoa",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Gehitu zerrendara",
"lists.account.remove": "Kendu zerrendatik",
"lists.delete": "Ezabatu zerrenda",

@ -70,7 +70,7 @@
"column.blocks": "کاربران مسدود شده",
"column.bookmarks": "نشانک‌ها",
"column.community": "خط زمانی محلّی",
"column.direct": "Direct messages",
"column.direct": "پیام‌های مستقیم",
"column.directory": "مرور نمایه‌ها",
"column.domain_blocks": "دامنه‌های مسدود شده",
"column.favourites": "پسندیده‌ها",
@ -93,7 +93,7 @@
"community.column_settings.media_only": "فقط رسانه",
"community.column_settings.remote_only": "تنها دوردست",
"compose_form.direct_message_warning_learn_more": "بیشتر بدانید",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات خطرناکی را روی ماستودون هم‌رسانی نکنید.",
"compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.",
"compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.",
"compose_form.lock_disclaimer.lock": "قفل‌شده",
@ -166,7 +166,7 @@
"empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.",
"empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.",
"empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.",
"empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.",
"empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!",
"empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.",
@ -231,7 +231,7 @@
"keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها",
"keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن",
"keyboard_shortcuts.description": "توضیح",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.direct": "برای گشودن ستون پیغام‌های مستقیم",
"keyboard_shortcuts.down": "پایین بردن در سیاهه",
"keyboard_shortcuts.enter": "گشودن فرسته",
"keyboard_shortcuts.favourite": "پسندیدن فرسته",
@ -264,6 +264,8 @@
"lightbox.expand": "گسترش جعبهٔ نمایش تصویر",
"lightbox.next": "بعدی",
"lightbox.previous": "قبلی",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "افزودن به سیاهه",
"lists.account.remove": "برداشتن از سیاهه",
"lists.delete": "حذف سیاهه",
@ -290,7 +292,7 @@
"navigation_bar.bookmarks": "نشانک‌ها",
"navigation_bar.community_timeline": "خط زمانی محلّی",
"navigation_bar.compose": "نوشتن فرستهٔ تازه",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "پیام‌های مستقیم",
"navigation_bar.discover": "گشت و گذار",
"navigation_bar.domain_blocks": "دامنه‌های مسدود شده",
"navigation_bar.edit_profile": "ویرایش نمایه",
@ -366,13 +368,13 @@
"poll_button.add_poll": "افزودن نظرسنجی",
"poll_button.remove_poll": "برداشتن نظرسنجی",
"privacy.change": "تغییر محرمانگی فرسته",
"privacy.direct.long": "فقط برای کاربران نام‌برده نمایان است",
"privacy.direct.short": "Direct",
"privacy.direct.long": "نمایان فقط برای کاربران اشاره شده",
"privacy.direct.short": "فقط افراد اشاره شده",
"privacy.private.long": "نمایان فقط برای پی‌گیرندگان",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.private.short": "فقط پی‌گیرندگان",
"privacy.public.long": "نمایان برای همه",
"privacy.public.short": "عمومی",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.long": "نمایان برای همه، ولی خارج از قابلیت‌های کشف",
"privacy.unlisted.short": "فهرست نشده",
"refresh": "نوسازی",
"regeneration_indicator.label": "در حال بار شدن…",
@ -515,7 +517,7 @@
"upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.",
"upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
"upload_form.description": "برای کم‌بینایان توصیفش کنید",
"upload_form.description_missing": "No description added",
"upload_form.description_missing": "شرحی افزوده نشده",
"upload_form.edit": "ویرایش",
"upload_form.thumbnail": "تغییر بندانگشتی",
"upload_form.undo": "حذف",

@ -264,6 +264,8 @@
"lightbox.expand": "Laajenna kuvan näkymälaatikko",
"lightbox.next": "Seuraava",
"lightbox.previous": "Edellinen",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Lisää listaan",
"lists.account.remove": "Poista listasta",
"lists.delete": "Poista lista",

@ -231,7 +231,7 @@
"keyboard_shortcuts.column": "Se placer dans une colonne",
"keyboard_shortcuts.compose": "Se placer dans la zone de rédaction",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "ouvrir la colonne des messages directs",
"keyboard_shortcuts.direct": "pour ouvrir la colonne des messages directs",
"keyboard_shortcuts.down": "Descendre dans la liste",
"keyboard_shortcuts.enter": "Ouvrir le message",
"keyboard_shortcuts.favourite": "Ajouter le message aux favoris",
@ -264,6 +264,8 @@
"lightbox.expand": "Agrandir la fenêtre de visualisation des images",
"lightbox.next": "Suivant",
"lightbox.previous": "Précédent",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Ajouter à la liste",
"lists.account.remove": "Supprimer de la liste",
"lists.delete": "Supprimer la liste",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -59,7 +59,7 @@
"alert.unexpected.title": "Oich!",
"announcement.announcement": "Brath-fios",
"attachments_list.unprocessed": "(gun phròiseasadh)",
"autosuggest_hashtag.per_week": "{count} gach seachdain",
"autosuggest_hashtag.per_week": "{count} san t-seachdain",
"boost_modal.combo": "Brùth air {combo} nam b fheàrr leat leum a ghearradh thar seo an ath-thuras",
"bundle_column_error.body": "Chaidh rudeigin cearr nuair a dhfheuch sinn ris a cho-phàirt seo a luchdadh.",
"bundle_column_error.retry": "Feuch ris a-rithist",
@ -264,6 +264,8 @@
"lightbox.expand": "Leudaich bogsa sealladh an deilbh",
"lightbox.next": "Air adhart",
"lightbox.previous": "Air ais",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Cuir ris an liosta",
"lists.account.remove": "Thoir air falbh on liosta",
"lists.delete": "Sguab às an liosta",

@ -264,6 +264,8 @@
"lightbox.expand": "Expandir a caixa de vista da imaxe",
"lightbox.next": "Seguinte",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Engadir á listaxe",
"lists.account.remove": "Eliminar da listaxe",
"lists.delete": "Eliminar listaxe",
@ -494,11 +496,11 @@
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificacións",
"tabs_bar.search": "Procurar",
"time_remaining.days": "{number, plural, one {# día} other {# días}} restantes",
"time_remaining.hours": "{number, plural, one {# hora} other {# horas}} restantes",
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minutos}} restantes",
"time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
"time_remaining.days": "Remata en {number, plural, one {# día} other {# días}}",
"time_remaining.hours": "Remata en {number, plural, one {# hora} other {# horas}}",
"time_remaining.minutes": "Remata en {number, plural, one {# minuto} other {# minutos}}",
"time_remaining.moments": "A piques de rematar",
"time_remaining.seconds": "Remata en {number, plural, one {# segundo} other {# segundos}}",
"timeline_hint.remote_resource_not_displayed": "Non se mostran {resource} desde outros servidores.",
"timeline_hint.resources.followers": "Seguidoras",
"timeline_hint.resources.follows": "Seguindo",

@ -264,6 +264,8 @@
"lightbox.expand": "הרחבת קופסת צפייה בתמונה",
"lightbox.next": "הלאה",
"lightbox.previous": "הקודם",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "הוסף לרשימה",
"lists.account.remove": "הסר מרשימה",
"lists.delete": "מחיקת רשימה",

@ -9,21 +9,21 @@
"account.browse_more_on_origin_server": "मूल प्रोफ़ाइल पर अधिक ब्राउज़ करें",
"account.cancel_follow_request": "फ़ॉलो रिक्वेस्ट रद्द करें",
"account.direct": "प्रत्यक्ष संदेश @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो",
"account.domain_blocked": "छिपा हुआ डोमेन",
"account.edit_profile": "प्रोफ़ाइल संपादित करें",
"account.enable_notifications": "Notify me when @{name} posts",
"account.enable_notifications": "जब @{name} पोस्ट मौजूद हो सूचित करें",
"account.endorse": "प्रोफ़ाइल पर दिखाए",
"account.follow": "फॉलो करें",
"account.followers": "फॉलोवर",
"account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
"account.followers_counter": "{count, plural, one {{counter} अनुगामी} other {{counter} समर्थक}}",
"account.following": "Following",
"account.following": "फॉलोइंग",
"account.following_counter": "{count, plural, one {{counter} निम्नलिखित} other {{counter} निम्नलिखित}}",
"account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
"account.follows_you": "आपको फॉलो करता है",
"account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
"account.joined": "Joined {date}",
"account.joined": "शामिल हुये {date}",
"account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था",
"account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।",
"account.media": "मीडिया",
@ -41,24 +41,24 @@
"account.statuses_counter": "{count, plural, one {{counter} भोंपू} other {{counter} भोंपू}}",
"account.unblock": "@{name} को अनब्लॉक करें",
"account.unblock_domain": "{domain} दिखाए",
"account.unblock_short": "Unblock",
"account.unblock_short": "अनब्लॉक",
"account.unendorse": "प्रोफ़ाइल पर न दिखाए",
"account.unfollow": "अनफॉलो करें",
"account.unmute": "अनम्यूट @{name}",
"account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे",
"account.unmute_short": "Unmute",
"account.unmute_short": "अनम्यूट",
"account_note.placeholder": "नोट्स जोड़ने के लिए क्लिक करें",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.cohort": "Sign-up month",
"admin.dashboard.retention.cohort_size": "New users",
"admin.dashboard.daily_retention": "साईन-अप के बाद उपयोगकर्ता के रिटेंशन दर",
"admin.dashboard.monthly_retention": "साईन-अप के बाद उपयोगकर्ता के महीने तक रिटेंशन दर",
"admin.dashboard.retention.average": "औसत",
"admin.dashboard.retention.cohort": "साईन-अप महिना",
"admin.dashboard.retention.cohort_size": "नये उपयोगकर्ता",
"alert.rate_limited.message": "कृप्या {retry_time, time, medium} के बाद दुबारा कोशिश करें",
"alert.rate_limited.title": "सीमित दर",
"alert.unexpected.message": "एक अप्रत्याशित त्रुटि हुई है!",
"alert.unexpected.title": "उफ़!",
"announcement.announcement": "घोषणा",
"attachments_list.unprocessed": "(unprocessed)",
"attachments_list.unprocessed": "(असंसाधित)",
"autosuggest_hashtag.per_week": "{count} हर सप्ताह",
"boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है",
"bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया",
@ -70,7 +70,7 @@
"column.blocks": "ब्लॉक्ड यूज़र्स",
"column.bookmarks": "पुस्तकचिह्न:",
"column.community": "लोकल टाइम्लाइन",
"column.direct": "Direct messages",
"column.direct": "सीधा संदेश",
"column.directory": "प्रोफाइल्स खोजें",
"column.domain_blocks": "छुपे डोमेन्स",
"column.favourites": "पसंदीदा",
@ -93,7 +93,7 @@
"community.column_settings.media_only": "सिर्फ़ मीडिया",
"community.column_settings.remote_only": "केवल सुदूर",
"compose_form.direct_message_warning_learn_more": "और जानें",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है",
"compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।",
"compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।",
"compose_form.lock_disclaimer.lock": "लॉक्ड",
@ -106,7 +106,7 @@
"compose_form.poll.switch_to_single": "एक ही विकल्प के लिए अनुमति देने के लिए पोल बदलें",
"compose_form.publish": "टूट्",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.save_changes": "परिवर्तनों को सहेजें",
"compose_form.sensitive.hide": "मीडिया को संवेदनशील के रूप में चिह्नित करें",
"compose_form.sensitive.marked": "मीडिया संवेदनशील के रूप में चिह्नित है",
"compose_form.sensitive.unmarked": "मीडिया संवेदनशील के रूप में चिह्नित नहीं है",
@ -121,8 +121,8 @@
"confirmations.delete.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं?",
"confirmations.delete_list.confirm": "मिटाए",
"confirmations.delete_list.message": "क्या आप वाकई इस लिस्ट को हमेशा के लिये मिटाना चाहते हैं?",
"confirmations.discard_edit_media.confirm": "Discard",
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
"confirmations.discard_edit_media.confirm": "डिस्कार्ड",
"confirmations.discard_edit_media.message": "लिस्ट में जोड़ें",
"confirmations.domain_block.confirm": "संपूर्ण डोमेन छिपाएं",
"confirmations.domain_block.message": "क्या आप वास्तव में, वास्तव में आप पूरे {domain} को ब्लॉक करना चाहते हैं? ज्यादातर मामलों में कुछ लक्षित ब्लॉक या म्यूट पर्याप्त और बेहतर हैं। आप किसी भी सार्वजनिक समय-सीमा या अपनी सूचनाओं में उस डोमेन की सामग्री नहीं देखेंगे। उस डोमेन से आपके फॉलोवर्स को हटा दिया जाएगा।",
"confirmations.logout.confirm": "लॉग आउट करें",
@ -160,15 +160,15 @@
"emoji_button.search_results": "खोज परिणाम",
"emoji_button.symbols": "प्रतीक",
"emoji_button.travel": "यात्रा एवं स्थान",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_suspended": "खाता निलंबित",
"empty_column.account_timeline": "सन्नाटा! यहां कोई टूट्स नहीं!",
"empty_column.account_unavailable": "प्रोफाइल उपलब्ध नहीं",
"empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।",
"empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।",
"empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.direct": "आपके पास अभी तक कोई सीधा संदेश नहीं है, जब आप भेजेंगे या प्राप्त करेंगे तो ये यहाँ दिखेगा |",
"empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.explore_statuses": "कुछ भी अभी ट्रैंडिंग नहीं है, कुछ देर बाद जांचे!",
"empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।",
"empty_column.favourites": "अभी तक किसी ने भी इस टूट को पसंद (स्टार) नहीं किया है. जब भी कोई इसे पसंद करेगा, उनका नाम यहाँ दिखेगा।",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "अगला",
"lightbox.previous": "पिछला",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "सूची से निकालें",
"lists.delete": "सूची हटाएँ",

@ -122,7 +122,7 @@
"confirmations.delete_list.confirm": "Obriši",
"confirmations.delete_list.message": "Jeste li sigurni da želite trajno obrisati ovu listu?",
"confirmations.discard_edit_media.confirm": "Odbaciti",
"confirmations.discard_edit_media.message": "Niste spremili promjene u opisu medija ili u predpregledu, svejedno ih odbaciti?",
"confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
"confirmations.domain_block.confirm": "Blokiraj cijelu domenu",
"confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.",
"confirmations.logout.confirm": "Odjavi se",
@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Sljedeće",
"lightbox.previous": "Prethodno",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Dodaj na listu",
"lists.account.remove": "Ukloni s liste",
"lists.delete": "Izbriši listu",

@ -110,8 +110,8 @@
"compose_form.sensitive.hide": "{count, plural, one {Média kényesnek jelölése} other {Média kényesnek jelölése}}",
"compose_form.sensitive.marked": "{count, plural, one {A médiát kényesnek jelölték} other {A médiát kényesnek jelölték}}",
"compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}",
"compose_form.spoiler.marked": "A szöveg figyelmeztetés mögé van rejtve",
"compose_form.spoiler.unmarked": "A szöveg nem rejtett",
"compose_form.spoiler.marked": "Tartalmi figyelmeztetés törlése",
"compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása",
"compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést",
"confirmation_modal.cancel": "Mégse",
"confirmations.block.block_and_report": "Letiltás és jelentés",
@ -264,6 +264,8 @@
"lightbox.expand": "Képnézet kinagyítása",
"lightbox.next": "Következő",
"lightbox.previous": "Előző",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Hozzáadás a listához",
"lists.account.remove": "Eltávolítás a listából",
"lists.delete": "Lista törlése",

@ -264,6 +264,8 @@
"lightbox.expand": "Բացել պատկերի դիտման պատուհանը",
"lightbox.next": "Յաջորդ",
"lightbox.previous": "Նախորդ",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Աւելացնել ցանկին",
"lists.account.remove": "Հանել ցանկից",
"lists.delete": "Ջնջել ցանկը",

@ -264,6 +264,8 @@
"lightbox.expand": "Besarkan kotak tampilan gambar",
"lightbox.next": "Selanjutnya",
"lightbox.previous": "Sebelumnya",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Tambah ke daftar",
"lists.account.remove": "Hapus dari daftar",
"lists.delete": "Hapus daftar",

@ -178,59 +178,59 @@
"empty_column.home.suggestions": "Videz ula sugestati",
"empty_column.list": "There is nothing in this list yet.",
"empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.mutes": "Vu ne silencigis irga uzanti til nun.",
"empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.",
"empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
"explore.suggested_follows": "For you",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
"explore.trending_tags": "Hashtags",
"follow_recommendations.done": "Done",
"follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
"follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
"error.unexpected_crash.explanation": "Pro eroro en nia numero o vidilkonciliebloproblemo, ca pagino ne povas korekte montresar.",
"error.unexpected_crash.explanation_addons": "Ca pagino ne povas korekte montresar. Ca eroro posible kauzigesas vidilplusajo o automata tradukutensili.",
"error.unexpected_crash.next_steps": "Probez rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.",
"error.unexpected_crash.next_steps_addons": "Probez desaktivigar e rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.",
"errors.unexpected_crash.copy_stacktrace": "Kopiez amastraso a klipplanko",
"errors.unexpected_crash.report_issue": "Reportigez problemo",
"explore.search_results": "Trovuri",
"explore.suggested_follows": "Por vu",
"explore.title": "Explorez",
"explore.trending_links": "Niuz",
"explore.trending_statuses": "Posti",
"explore.trending_tags": "Hashtagi",
"follow_recommendations.done": "Fina",
"follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.",
"follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!",
"follow_request.authorize": "Yurizar",
"follow_request.reject": "Refuzar",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"generic.saved": "Saved",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
"follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.",
"generic.saved": "Sparesis",
"getting_started.developers": "Developeri",
"getting_started.directory": "Profilcheflisto",
"getting_started.documentation": "Dokumentajo",
"getting_started.heading": "Debuto",
"getting_started.invite": "Invite people",
"getting_started.invite": "Invitez personi",
"getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
"hashtag.column_header.tag_mode.all": "and {additional}",
"hashtag.column_header.tag_mode.any": "or {additional}",
"hashtag.column_header.tag_mode.none": "without {additional}",
"hashtag.column_settings.select.no_options_message": "No suggestions found",
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
"hashtag.column_settings.tag_mode.all": "All of these",
"hashtag.column_settings.tag_mode.any": "Any of these",
"hashtag.column_settings.tag_mode.none": "None of these",
"getting_started.terms": "Servkondicioni",
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "sen {additional}",
"hashtag.column_settings.select.no_options_message": "Nula sugestati",
"hashtag.column_settings.select.placeholder": "Insertez hashtagi…",
"hashtag.column_settings.tag_mode.all": "Omna co",
"hashtag.column_settings.tag_mode.any": "Irga co",
"hashtag.column_settings.tag_mode.none": "Nula co",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Simpla",
"home.column_settings.show_reblogs": "Montrar repeti",
"home.column_settings.show_replies": "Montrar respondi",
"home.hide_announcements": "Hide announcements",
"home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"home.hide_announcements": "Celez anunci",
"home.show_announcements": "Montrez anunci",
"intervals.full.days": "{number, plural, one {# dio} other {# dii}}",
"intervals.full.hours": "{number, plural, one {# horo} other {# hori}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.description": "Deskripto",
"keyboard_shortcuts.direct": "apertar kolumno di direta mesaji",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
@ -239,7 +239,7 @@
"keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.hotkey": "Rapidklavo",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
@ -260,285 +260,287 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Klozar",
"lightbox.compress": "Compress image view box",
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.edit.submit": "Change title",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"lightbox.compress": "Kompresez imajvidbuxo",
"lightbox.expand": "Expansez imajvidbuxo",
"lightbox.next": "Nexta",
"lightbox.previous": "Antea",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Insertez a listo",
"lists.account.remove": "Efacez de listo",
"lists.delete": "Efacez listo",
"lists.edit": "Modifikez listo",
"lists.edit.submit": "Chanjez titulo",
"lists.new.create": "Insertez listo",
"lists.new.title_placeholder": "Nova listotitulo",
"lists.replies_policy.followed": "Irga sequita uzanto",
"lists.replies_policy.list": "Membro di listo",
"lists.replies_policy.none": "Nulu",
"lists.replies_policy.title": "Montrez respondi a:",
"lists.search": "Trovez inter personi quon vu sequas",
"lists.subheading": "Vua listi",
"load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
"loading_indicator.label": "Kargante...",
"media_gallery.toggle_visible": "Chanjar videbleso",
"missing_indicator.label": "Ne trovita",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps",
"missing_indicator.sublabel": "Ca resurso ne existas",
"mute_modal.duration": "Durado",
"mute_modal.hide_notifications": "Celez avizi de ca uzanto?",
"mute_modal.indefinite": "Nedefinitiva",
"navigation_bar.apps": "Telefonprogrami",
"navigation_bar.blocks": "Blokusita uzeri",
"navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.bookmarks": "Libromarki",
"navigation_bar.community_timeline": "Lokala tempolineo",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direta mesaji",
"navigation_bar.discover": "Discover",
"navigation_bar.discover": "Deskovrez",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Modifikar profilo",
"navigation_bar.explore": "Explore",
"navigation_bar.explore": "Explorez",
"navigation_bar.favourites": "Favorati",
"navigation_bar.filters": "Muted words",
"navigation_bar.filters": "Silencigita vorti",
"navigation_bar.follow_requests": "Demandi di sequado",
"navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.follows_and_followers": "Sequati e sequanti",
"navigation_bar.info": "Detaloza informi",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
"navigation_bar.lists": "Listi",
"navigation_bar.logout": "Ekirar",
"navigation_bar.mutes": "Celita uzeri",
"navigation_bar.personal": "Personal",
"navigation_bar.personal": "Personala",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferi",
"navigation_bar.public_timeline": "Federata tempolineo",
"navigation_bar.security": "Security",
"notification.admin.sign_up": "{name} signed up",
"navigation_bar.security": "Sekureso",
"notification.admin.sign_up": "{name} registresis",
"notification.favourite": "{name} favorizis tua mesajo",
"notification.follow": "{name} sequeskis tu",
"notification.follow_request": "{name} has requested to follow you",
"notification.follow_request": "{name} demandas sequar vu",
"notification.mention": "{name} mencionis tu",
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.own_poll": "Vua votposto finigis",
"notification.poll": "Votposto quo havas vua voto finigis",
"notification.reblog": "{name} repetis tua mesajo",
"notification.status": "{name} just posted",
"notification.update": "{name} edited a post",
"notification.status": "{name} nove postigis",
"notification.update": "{name} modifikis posto",
"notifications.clear": "Efacar savigi",
"notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?",
"notifications.column_settings.admin.sign_up": "New sign-ups:",
"notifications.column_settings.alert": "Surtabla savigi",
"notifications.column_settings.admin.sign_up": "Nova registranti:",
"notifications.column_settings.alert": "Desktopavizi",
"notifications.column_settings.favourite": "Favorati:",
"notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show_bar": "Show filter bar",
"notifications.column_settings.filter_bar.advanced": "Montrez omna kategorii",
"notifications.column_settings.filter_bar.category": "Rapidfiltrobaro",
"notifications.column_settings.filter_bar.show_bar": "Montrez filtrobaro",
"notifications.column_settings.follow": "Nova sequanti:",
"notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.follow_request": "Nova sequodemandi:",
"notifications.column_settings.mention": "Mencioni:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
"notifications.column_settings.poll": "Votpostorezulti:",
"notifications.column_settings.push": "Pulsavizi",
"notifications.column_settings.reblog": "Repeti:",
"notifications.column_settings.show": "Montrar en kolumno",
"notifications.column_settings.sound": "Plear sono",
"notifications.column_settings.status": "New toots:",
"notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favourites",
"notifications.filter.follows": "Follows",
"notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Vote",
"poll.voted": "You voted for this answer",
"poll.votes": "{votes, plural, one {# vote} other {# votes}}",
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"notifications.column_settings.unread_notifications.category": "Nelektita avizi",
"notifications.column_settings.unread_notifications.highlight": "Briligez nelektita avizi",
"notifications.column_settings.update": "Modifikati:",
"notifications.filter.all": "Omna",
"notifications.filter.boosts": "Busti",
"notifications.filter.favourites": "Favorati",
"notifications.filter.follows": "Sequati",
"notifications.filter.mentions": "Mencioni",
"notifications.filter.polls": "Votpostorezulti",
"notifications.filter.statuses": "Niuz de personi quon vu sequas",
"notifications.grant_permission": "Donez permiso.",
"notifications.group": "{count} avizi",
"notifications.mark_as_read": "Markigez singla avizi quale lektita",
"notifications.permission_denied": "Desktopavizi esas nedisplonebla pro antea refuzita vidilpermisdemando",
"notifications.permission_denied_alert": "Desktopavizi ne povas aktivigesar pro ke vidilpermiso refuzesis",
"notifications.permission_required": "Desktopavizi esas nedisplonebla pro ke bezonata permiso ne donesis.",
"notifications_permission_banner.enable": "Aktivigez desktopavizi",
"notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.",
"notifications_permission_banner.title": "Irga kozo ne pasas vu",
"picture_in_picture.restore": "Retropozez",
"poll.closed": "Klozita",
"poll.refresh": "Rifreshez",
"poll.total_people": "{count, plural, one {# persono} other {# personi}}",
"poll.total_votes": "{count, plural, one {# voto} other {# voti}}",
"poll.vote": "Votez",
"poll.voted": "Vu ja votis ca respondo",
"poll.votes": "{votes, plural, one {# voto} other {# voti}}",
"poll_button.add_poll": "Insertez votposto",
"poll_button.remove_poll": "Efacez votposto",
"privacy.change": "Aranjar privateso di mesaji",
"privacy.direct.long": "Sendar nur a mencionata uzeri",
"privacy.direct.short": "Direct",
"privacy.direct.short": "Mencionita personi nur",
"privacy.private.long": "Sendar nur a sequanti",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.private.short": "Sequanti nur",
"privacy.public.long": "Videbla da omnu",
"privacy.public.short": "Publike",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti",
"privacy.unlisted.short": "Ne enlistigota",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"refresh": "Rifreshez",
"regeneration_indicator.label": "Chargas…",
"regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!",
"relative_time.days": "{number}d",
"relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
"relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
"relative_time.full.just_now": "just now",
"relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
"relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
"relative_time.full.days": "{number, plural, one {# dio} other {# dii}} ante nun",
"relative_time.full.hours": "{number, plural, one {# horo} other {# hori}} ante nun",
"relative_time.full.just_now": "jus nun",
"relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} ante nun",
"relative_time.full.seconds": "{number, plural, one {# sekundo} other {# sekundi}} ante nun",
"relative_time.hours": "{number}h",
"relative_time.just_now": "now",
"relative_time.just_now": "nun",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "today",
"relative_time.today": "hodie",
"reply_indicator.cancel": "Nihiligar",
"report.block": "Block",
"report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
"report.categories.other": "Other",
"report.categories.spam": "Spam",
"report.categories.violation": "Content violates one or more server rules",
"report.category.subtitle": "Choose the best match",
"report.category.title": "Tell us what's going on with this {type}",
"report.category.title_account": "profile",
"report.category.title_status": "post",
"report.close": "Done",
"report.comment.title": "Is there anything else you think we should know?",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.mute": "Mute",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.next": "Next",
"report.block": "Restriktez",
"report.block_explanation": "Vu ne vidos olia posti. Oli ne povas vidar vua posti o sequar vu. Oli savos ke oli restriktesis.",
"report.categories.other": "Altra",
"report.categories.spam": "Spamo",
"report.categories.violation": "Kontenaj nesequas 1 o plu servilreguli",
"report.category.subtitle": "Selektez maxim bona parigato",
"report.category.title": "Savigez ni pri quo eventas kun ca {type}",
"report.category.title_account": "profilo",
"report.category.title_status": "posto",
"report.close": "Fina",
"report.comment.title": "Ka altra irgo quon vu pensas ke ni debas savar?",
"report.forward": "Sendez a {target}",
"report.forward_hint": "La konto esas de altra servilo. Vu volas sendar raportkopiur sen nomo ibe anke?",
"report.mute": "Silencigez",
"report.mute_explanation": "Vu ne vidos olia posti. Oli povas ankore sequar vu e vidar vua posti e ne savar ke oli silencigesis.",
"report.next": "Nexta",
"report.placeholder": "Plusa komenti",
"report.reasons.dislike": "I don't like it",
"report.reasons.dislike_description": "It is not something you want to see",
"report.reasons.other": "It's something else",
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "It violates server rules",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Select all that apply",
"report.rules.title": "Which rules are being violated?",
"report.statuses.subtitle": "Select all that apply",
"report.statuses.title": "Are there any posts that back up this report?",
"report.reasons.dislike": "Me ne amas",
"report.reasons.dislike_description": "Ol ne esas olo quon vu volas vidar",
"report.reasons.other": "Ol esas altra ulo",
"report.reasons.other_description": "La problemo ne fitas a altra kategorii",
"report.reasons.spam": "Ol esas spamo",
"report.reasons.spam_description": "Mala ligili, falsa interago o repetiva repliki",
"report.reasons.violation": "Ol nesequas servilreguli",
"report.reasons.violation_description": "Vu remarkas ke ol nesequas partikulara reguli",
"report.rules.subtitle": "Selektez relatata omno",
"report.rules.title": "Quala reguli nesequesas?",
"report.statuses.subtitle": "Selektez relatata omno",
"report.statuses.title": "Ka existas irga posti quo suportas ca raporto?",
"report.submit": "Sendar",
"report.target": "Denuncante",
"report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
"report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
"report.thanks.title": "Don't want to see this?",
"report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
"report.unfollow": "Unfollow @{name}",
"report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
"report.thanks.take_action": "Co esas vua opcioni por regularar quo vu vidas che Mastodon:",
"report.thanks.take_action_actionable": "Dum ke ni kontrolas co, vu povas demarshar kontra @{name}:",
"report.thanks.title": "Ka vu ne volas vidar co?",
"report.thanks.title_actionable": "Danko por raportigar, ni kontrolos co.",
"report.unfollow": "Desequez @{name}",
"report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto plu, desequez oli.",
"search.placeholder": "Serchez",
"search_popout.search_format": "Advanced search format",
"search_popout.search_format": "Avance trovformato",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.hashtag": "hashtago",
"search_popout.tips.status": "status",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.all": "All",
"search_results.hashtags": "Hashtags",
"search_results.nothing_found": "Could not find anything for these search terms",
"search_popout.tips.text": "Simpla textoretrovenuri quo parigas trovnomi, uzantonomi e hashtagi",
"search_popout.tips.user": "uzanto",
"search_results.accounts": "Personi",
"search_results.all": "Omna",
"search_results.hashtags": "Hashtagi",
"search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti",
"search_results.statuses": "Toots",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_account": "Apertez jerintervizajo por @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
"status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.block": "Restriktez @{name}",
"status.bookmark": "Libromarko",
"status.cancel_reblog_private": "Debustez",
"status.cannot_reblog": "Ca posto ne povas bustesas",
"status.copy": "Copy link to status",
"status.delete": "Efacar",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "Embed",
"status.detailed_status": "Detala konversvido",
"status.direct": "Direta mesajigez @{name}",
"status.edit": "Modifikez",
"status.edited": "Modifikesis ye {date}",
"status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}",
"status.embed": "Eninsertez",
"status.favourite": "Favorizar",
"status.filtered": "Filtered",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.filtered": "Filtrita",
"status.history.created": "{name} kreis ye {date}",
"status.history.edited": "{name} modifikis ye {date}",
"status.load_more": "Kargar pluse",
"status.media_hidden": "Kontenajo celita",
"status.mention": "Mencionar @{name}",
"status.more": "More",
"status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation",
"status.more": "Plu",
"status.mute": "Silencigez @{name}",
"status.mute_conversation": "Silencigez konverso",
"status.open": "Detaligar ca mesajo",
"status.pin": "Pin on profile",
"status.pin": "Pinglagez che profilo",
"status.pinned": "Pinned toot",
"status.read_more": "Read more",
"status.read_more": "Lektez plu",
"status.reblog": "Repetar",
"status.reblog_private": "Boost with original visibility",
"status.reblog_private": "Bustez kun originala videbleso",
"status.reblogged_by": "{name} repetita",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.remove_bookmark": "Remove bookmark",
"status.redraft": "Efacez e riskisigez",
"status.remove_bookmark": "Efacez libromarko",
"status.reply": "Respondar",
"status.replyAll": "Respondar a filo",
"status.report": "Denuncar @{name}",
"status.sensitive_warning": "Trubliva kontenajo",
"status.share": "Share",
"status.share": "Partigez",
"status.show_less": "Montrar mine",
"status.show_less_all": "Show less for all",
"status.show_less_all": "Montrez min por omno",
"status.show_more": "Montrar plue",
"status.show_more_all": "Show more for all",
"status.show_thread": "Show thread",
"status.uncached_media_warning": "Not available",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"status.show_more_all": "Montrez plu por omno",
"status.show_thread": "Montrez postaro",
"status.uncached_media_warning": "Nedisplonebla",
"status.unmute_conversation": "Desilencigez konverso",
"status.unpin": "Depinglagez de profilo",
"suggestions.dismiss": "Desklozez sugestajo",
"suggestions.header": "Vu forsan havas intereso pri…",
"tabs_bar.federated_timeline": "Federata",
"tabs_bar.home": "Hemo",
"tabs_bar.local_timeline": "Lokala",
"tabs_bar.notifications": "Savigi",
"tabs_bar.search": "Search",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"tabs_bar.search": "Trovez",
"time_remaining.days": "{number, plural, one {# dio} other {# dii}} restas",
"time_remaining.hours": "{number, plural, one {# horo} other {# hori}} restas",
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} restas",
"time_remaining.moments": "Poka sekundi restas",
"time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundi}} restas",
"timeline_hint.remote_resource_not_displayed": "{resource} de altra servili ne montresas.",
"timeline_hint.resources.followers": "Sequanti",
"timeline_hint.resources.follows": "Sequati",
"timeline_hint.resources.statuses": "Older toots",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"units.short.billion": "{count}B",
"trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personi}} parolas",
"trends.trending_now": "Tendencigas nun",
"ui.beforeunload": "Vua skisato perdesos se vu ekiras Mastodon.",
"units.short.billion": "{count}G",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"upload_area.title": "Tranar faligar por kargar",
"upload_button.label": "Adjuntar kontenajo",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.description_missing": "No description added",
"upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
"upload_error.limit": "Failcharglimito ecesesis.",
"upload_error.poll": "Failchargo ne permisesas kun votposti.",
"upload_form.audio_description": "Deskriptez por personi kun min audkapableso",
"upload_form.description": "Deskriptez por personi kun min vidkapableso",
"upload_form.description_missing": "Deskriptajo ne insertesis",
"upload_form.edit": "Modifikez",
"upload_form.thumbnail": "Chanjez mikroimajo",
"upload_form.undo": "Desfacar",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.applying": "Applying…",
"upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_form.video_description": "Deskriptez por personi kun min audkapableso o min vidkapableso",
"upload_modal.analyzing_picture": "Analizas imajo…",
"upload_modal.apply": "Aplikez",
"upload_modal.applying": "Aplikas…",
"upload_modal.choose_image": "Selektez imajo",
"upload_modal.description_placeholder": "Rapida bruna foxo saltas super indolenta hundo",
"upload_modal.detect_text": "Deskovrez texto de imajo",
"upload_modal.edit_media": "Modifikez medii",
"upload_modal.hint": "Kliktez o tirez cirklo che prevido por selektar central punto quo sempre montresas kun omna mikroimaji.",
"upload_modal.preparing_ocr": "Preparas OCR…",
"upload_modal.preview_label": "Previdez ({ratio})",
"upload_progress.label": "Kargante...",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.mute": "Mute sound",
"video.pause": "Pause",
"video.play": "Play",
"video.unmute": "Unmute sound"
"video.close": "Klozez video",
"video.download": "Deschargez failo",
"video.exit_fullscreen": "Ekirez plena skreno",
"video.expand": "Expansez video",
"video.fullscreen": "Plena skreno",
"video.hide": "Celez video",
"video.mute": "Silencigez sono",
"video.pause": "Pauzez",
"video.play": "Pleez",
"video.unmute": "Desilencigez sono"
}

@ -264,6 +264,8 @@
"lightbox.expand": "Fletta út myndskoðunarreit",
"lightbox.next": "Næsta",
"lightbox.previous": "Fyrra",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Bæta á lista",
"lists.account.remove": "Fjarlægja af lista",
"lists.delete": "Eyða lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Espandi casella di visualizzazione immagine",
"lightbox.next": "Successivo",
"lightbox.previous": "Precedente",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Aggiungi alla lista",
"lists.account.remove": "Togli dalla lista",
"lists.delete": "Elimina lista",

@ -268,6 +268,8 @@
"lightbox.expand": "画像ビューボックスを開く",
"lightbox.next": "次",
"lightbox.previous": "前",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "リストに追加",
"lists.account.remove": "リストから外す",
"lists.delete": "リストを削除",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "შემდეგი",
"lightbox.previous": "წინა",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "სიაში დამატება",
"lists.account.remove": "სიიდან ამოშლა",
"lists.delete": "სიის წაშლა",

@ -264,6 +264,8 @@
"lightbox.expand": "Simeɣer tamnaḍt n uskan n tugna",
"lightbox.next": "Γer zdat",
"lightbox.previous": "Γer deffir",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart",
"lists.delete": "Kkes tabdart",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Келесі",
"lightbox.previous": "Алдыңғы",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Тізімге қосу",
"lists.account.remove": "Тізімнен шығару",
"lists.delete": "Тізімді өшіру",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -28,7 +28,7 @@
"account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.",
"account.media": "미디어",
"account.mention": "@{name}에게 글쓰기",
"account.moved_to": "{name} 계정을 이동했습니다:",
"account.moved_to": "{name} 님은 계정을 이동했습니다:",
"account.mute": "@{name} 뮤트",
"account.mute_notifications": "@{name}의 알림을 뮤트",
"account.muted": "뮤트 됨",
@ -264,6 +264,8 @@
"lightbox.expand": "이미지 박스 확장",
"lightbox.next": "다음",
"lightbox.previous": "이전",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "리스트에 추가",
"lists.account.remove": "리스트에서 제거",
"lists.delete": "리스트 삭제",

@ -264,6 +264,8 @@
"lightbox.expand": "Qutîya wêneya nîşan dike fireh bike",
"lightbox.next": "Pêş",
"lightbox.previous": "Paş",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Tevlî rêzokê bike",
"lists.account.remove": "Ji rêzokê rake",
"lists.delete": "Rêzokê jê bibe",

@ -264,6 +264,8 @@
"lightbox.expand": "Efani kist a weles aven",
"lightbox.next": "Nessa",
"lightbox.previous": "Kynsa",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Keworra dhe rol",
"lists.account.remove": "Removya a rol",
"lists.delete": "Dilea rol",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Paplašināt attēla ietvaru",
"lightbox.next": "Tālāk",
"lightbox.previous": "Iepriekš",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Pievienot sarakstam",
"lists.account.remove": "Noņemt no saraksta",
"lists.delete": "Dzēst sarakstu",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "അടുത്തത്",
"lightbox.previous": "പുറകോട്ട്",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക",
"lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക",
"lists.delete": "പട്ടിക ഒഴിവാക്കുക",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Besarkan kotak paparan imej",
"lightbox.next": "Seterusnya",
"lightbox.previous": "Sebelumnya",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Tambah ke senarai",
"lists.account.remove": "Buang daripada senarai",
"lists.delete": "Padam senarai",

@ -264,6 +264,8 @@
"lightbox.expand": "Afbeelding groot weergeven",
"lightbox.next": "Volgende",
"lightbox.previous": "Vorige",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Aan lijst toevoegen",
"lists.account.remove": "Uit lijst verwijderen",
"lists.delete": "Lijst verwijderen",

@ -264,6 +264,8 @@
"lightbox.expand": "Ekspander bildevisning boks",
"lightbox.next": "Neste",
"lightbox.previous": "Førre",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Legg til i liste",
"lists.account.remove": "Fjern frå liste",
"lists.delete": "Slett liste",

@ -264,6 +264,8 @@
"lightbox.expand": "Ekspander bildevisning boks",
"lightbox.next": "Neste",
"lightbox.previous": "Forrige",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Legg til i listen",
"lists.account.remove": "Fjern fra listen",
"lists.delete": "Slett listen",

@ -264,6 +264,8 @@
"lightbox.expand": "Espandir la fenèstra de visualizacion dimatge",
"lightbox.next": "Seguent",
"lightbox.previous": "Precedent",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Ajustar a la lista",
"lists.account.remove": "Levar de la lista",
"lists.delete": "Suprimir la lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -268,6 +268,8 @@
"lightbox.expand": "Rozwiń pole widoku obrazu",
"lightbox.next": "Następne",
"lightbox.previous": "Poprzednie",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Dodaj do listy",
"lists.account.remove": "Usunąć z listy",
"lists.delete": "Usuń listę",

@ -264,6 +264,8 @@
"lightbox.expand": "Abrir imagem",
"lightbox.next": "Próximo",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Adicionar à lista",
"lists.account.remove": "Remover da lista",
"lists.delete": "Excluir lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expandir caixa de visualização de imagem",
"lightbox.next": "Próximo",
"lightbox.previous": "Anterior",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Adicionar à lista",
"lists.account.remove": "Remover da lista",
"lists.delete": "Eliminar lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Deschide panoul de vizualizare a imaginilor",
"lightbox.next": "Înainte",
"lightbox.previous": "Înapoi",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Adaugă în listă",
"lists.account.remove": "Elimină din listă",
"lists.delete": "Șterge lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Развернуть окно просмотра изображений",
"lightbox.next": "Далее",
"lightbox.previous": "Назад",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Добавить в список",
"lists.account.remove": "Убрать из списка",
"lists.delete": "Удалить список",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Ismànnia sa casella de visualizatzione de is immàgines",
"lightbox.next": "Imbeniente",
"lightbox.previous": "Pretzedente",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Agiunghe a sa lista",
"lists.account.remove": "Boga dae sa lista",
"lists.delete": "Cantzella sa lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "ඊළඟ",
"lightbox.previous": "පෙර",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "ලැයිස්තුවට එකතු කරන්න",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -70,7 +70,7 @@
"column.blocks": "Blokovaní užívatelia",
"column.bookmarks": "Záložky",
"column.community": "Miestna časová os",
"column.direct": "Direct messages",
"column.direct": "Priame správy",
"column.directory": "Prehľadávaj profily",
"column.domain_blocks": "Skryté domény",
"column.favourites": "Obľúbené",
@ -264,6 +264,8 @@
"lightbox.expand": "Rozšíriť náhľad obrázku",
"lightbox.next": "Ďalšie",
"lightbox.previous": "Predchádzajúci",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Pridaj do zoznamu",
"lists.account.remove": "Odober zo zoznamu",
"lists.delete": "Vymaž list",
@ -290,7 +292,7 @@
"navigation_bar.bookmarks": "Záložky",
"navigation_bar.community_timeline": "Miestna časová os",
"navigation_bar.compose": "Napíš nový príspevok",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "Priame správy",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "Skryté domény",
"navigation_bar.edit_profile": "Uprav profil",
@ -456,8 +458,8 @@
"status.embed": "Vložiť",
"status.favourite": "Páči sa mi",
"status.filtered": "Filtrované",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.history.created": "{name} vytvoril/a {date}",
"status.history.edited": "{name} upravil/a {date}",
"status.load_more": "Ukáž viac",
"status.media_hidden": "Skryté médiá",
"status.mention": "Spomeň @{name}",
@ -515,7 +517,7 @@
"upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.",
"upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu",
"upload_form.description": "Opis pre slabo vidiacich",
"upload_form.description_missing": "No description added",
"upload_form.description_missing": "Nepridaný žiadny popis",
"upload_form.edit": "Uprav",
"upload_form.thumbnail": "Zmeniť miniatúru",
"upload_form.undo": "Vymaž",

@ -264,6 +264,8 @@
"lightbox.expand": "Razširi ogledno polje slike",
"lightbox.next": "Naslednji",
"lightbox.previous": "Prejšnji",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Dodaj na seznam",
"lists.account.remove": "Odstrani s seznama",
"lists.delete": "Izbriši seznam",

@ -264,6 +264,8 @@
"lightbox.expand": "Zgjeroje kuadratin e parjes së figurave",
"lightbox.next": "Pasuesja",
"lightbox.previous": "E mëparshmja",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Shto në listë",
"lists.account.remove": "Hiqe nga lista",
"lists.delete": "Fshije listën",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Sledeći",
"lightbox.previous": "Prethodni",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Dodaj na listu",
"lists.account.remove": "Ukloni sa liste",
"lists.delete": "Obriši listu",

@ -264,6 +264,8 @@
"lightbox.expand": "Увећај преглед слике",
"lightbox.next": "Следећи",
"lightbox.previous": "Претходни",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Додај на листу",
"lists.account.remove": "Уклони са листе",
"lists.delete": "Обриши листу",

@ -264,6 +264,8 @@
"lightbox.expand": "Utöka bildvyrutan",
"lightbox.next": "Nästa",
"lightbox.previous": "Tidigare",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Lägg till i lista",
"lists.account.remove": "Ta bort från lista",
"lists.delete": "Radera lista",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "அடுத்த",
"lightbox.previous": "சென்ற",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "பட்டியலில் சேர்",
"lists.account.remove": "பட்டியலில் இருந்து அகற்று",
"lists.delete": "பட்டியலை நீக்கு",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "తరువాత",
"lightbox.previous": "మునుపటి",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "జాబితాకు జోడించు",
"lists.account.remove": "జాబితా నుండి తొలగించు",
"lists.delete": "జాబితాను తొలగించు",

@ -93,7 +93,7 @@
"community.column_settings.media_only": "สื่อเท่านั้น",
"community.column_settings.remote_only": "ระยะไกลเท่านั้น",
"compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่เป็นอันตรายใด ๆ ผ่าน Mastodon",
"compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก",
"compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ",
"compose_form.lock_disclaimer.lock": "ล็อคอยู่",
@ -264,6 +264,8 @@
"lightbox.expand": "ขยายกล่องดูภาพ",
"lightbox.next": "ถัดไป",
"lightbox.previous": "ก่อนหน้า",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "เพิ่มไปยังรายการ",
"lists.account.remove": "เอาออกจากรายการ",
"lists.delete": "ลบรายการ",
@ -349,9 +351,9 @@
"notifications.grant_permission": "ให้สิทธิอนุญาต",
"notifications.group": "{count} การแจ้งเตือน",
"notifications.mark_as_read": "ทำเครื่องหมายทุกการแจ้งเตือนว่าอ่านแล้ว",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications.permission_denied": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากมีการปฏิเสธคำขอสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้",
"notifications.permission_denied_alert": "ไม่สามารถเปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป เนื่องจากมีการปฏิเสธสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้",
"notifications.permission_required": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากไม่ได้ให้สิทธิอนุญาตที่จำเป็น",
"notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "ไม่พลาดสิ่งใด",

@ -264,6 +264,8 @@
"lightbox.expand": "Resim görüntüleme kutusunu genişlet",
"lightbox.next": "Sonraki",
"lightbox.previous": "Önceki",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Listeye ekle",
"lists.account.remove": "Listeden kaldır",
"lists.delete": "Listeyi sil",

@ -7,13 +7,13 @@
"account.block_domain": "{domain} доменын блоклау",
"account.blocked": "Блокланган",
"account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була",
"account.cancel_follow_request": "Cancel follow request",
"account.cancel_follow_request": "Язылуга сорауны бетерү",
"account.direct": "@{name} өчен яңа хат",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain blocked",
"account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү",
"account.domain_blocked": "Домен блокланган",
"account.edit_profile": "Профильны үзгәртү",
"account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру",
"account.endorse": "Feature on profile",
"account.endorse": "Профильдә рекомендацияләү",
"account.follow": "Языл",
"account.followers": "Язылучылар",
"account.followers.empty": "Әле беркем дә язылмаган.",
@ -23,12 +23,12 @@
"account.follows.empty": "Беркемгә дә язылмаган әле.",
"account.follows_you": "Сезгә язылган",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.joined": "Joined {date}",
"account.joined": "{date} көнендә теркәлде",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.",
"account.media": "Медиа",
"account.mention": "@{name} искәртү",
"account.moved_to": "{name} has moved to:",
"account.moved_to": "{name} монда күчте:",
"account.mute": "Mute @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Киләсе",
"lightbox.previous": "Алдагы",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Исемлектән бетерергә",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Розгорнути поле перегляду зображень",
"lightbox.next": "Далі",
"lightbox.previous": "Назад",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Додати до списку",
"lists.account.remove": "Видалити зі списку",
"lists.delete": "Видалити список",
@ -438,7 +440,7 @@
"search_results.hashtags": "Хештеґи",
"search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами",
"search_results.statuses": "Дмухів",
"search_results.statuses_fts_disabled": "Пошук дмухів за вмістом недоступний на цьому сервері Mastodon.",
"search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.",
"search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}",
"status.admin_account": "Відкрити інтерфейс модерації для @{name}",
"status.admin_status": "Відкрити цей статус в інтерфейсі модерації",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",

@ -264,6 +264,8 @@
"lightbox.expand": "Phóng to hình",
"lightbox.next": "Tiếp",
"lightbox.previous": "Trước",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "Thêm vào danh sách",
"lists.account.remove": "Xóa khỏi danh sách",
"lists.delete": "Xóa danh sách",

@ -264,6 +264,8 @@
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "ⵔⵏⵓ ⵖⵔ ⵜⵍⴳⴰⵎⵜ",
"lists.account.remove": "ⴽⴽⵙ ⵙⴳ ⵜⵍⴳⴰⵎⵜ",
"lists.delete": "ⴽⴽⵙ ⵜⴰⵍⴳⴰⵎⵜ",

@ -24,7 +24,7 @@
"account.follows_you": "关注了你",
"account.hide_reblogs": "隐藏来自 @{name} 的转贴",
"account.joined": "加入于 {date}",
"account.link_verified_on": "此链接的所有权已在 {date} 检查",
"account.link_verified_on": "此链接的所有权已在 {date} 检查",
"account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。",
"account.media": "媒体",
"account.mention": "提及 @{name}",
@ -32,8 +32,8 @@
"account.mute": "隐藏 @{name}",
"account.mute_notifications": "隐藏来自 @{name} 的通知",
"account.muted": "已隐藏",
"account.posts": "帖子",
"account.posts_with_replies": "帖子和回复",
"account.posts": "嘟文",
"account.posts_with_replies": "嘟文和回复",
"account.report": "举报 @{name}",
"account.requested": "正在等待对方同意。点击以取消发送关注请求",
"account.share": "分享 @{name} 的个人资料页",
@ -46,7 +46,7 @@
"account.unfollow": "取消关注",
"account.unmute": "不再隐藏 @{name}",
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
"account.unmute_short": "取消静音",
"account.unmute_short": "恢复消息提醒",
"account_note.placeholder": "点击添加备注",
"admin.dashboard.daily_retention": "注册后用户留存率(按日计算)",
"admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)",
@ -79,7 +79,7 @@
"column.lists": "列表",
"column.mutes": "已隐藏的用户",
"column.notifications": "通知",
"column.pins": "置顶帖子",
"column.pins": "置顶嘟文",
"column.public": "跨站公共时间轴",
"column_back_button.label": "返回",
"column_header.hide_settings": "隐藏设置",
@ -94,8 +94,8 @@
"community.column_settings.remote_only": "仅限外部",
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。",
"compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。",
"compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。",
"compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。",
"compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。",
"compose_form.lock_disclaimer.lock": "开启保护",
"compose_form.placeholder": "在想些什么?",
"compose_form.poll.add_option": "添加一个选项",
@ -124,11 +124,11 @@
"confirmations.discard_edit_media.confirm": "丢弃",
"confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?",
"confirmations.domain_block.confirm": "屏蔽整个域名",
"confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。",
"confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,对几个特定的用户进行屏蔽或禁用对他们的消息提醒就足够了。屏蔽后,来自该域名的内容将不再出现在你任何的公共时间轴或通知列表里,你来自该域名下的关注者也将被移除。",
"confirmations.logout.confirm": "登出",
"confirmations.logout.message": "你确定要登出吗?",
"confirmations.mute.confirm": "隐藏",
"confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。",
"confirmations.mute.explanation": "这将隐藏来自他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。",
"confirmations.mute.message": "你确定要隐藏 {name} 吗?",
"confirmations.redraft.confirm": "删除并重新编辑",
"confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
@ -144,7 +144,7 @@
"directory.local": "仅来自 {domain}",
"directory.new_arrivals": "新来者",
"directory.recently_active": "最近活跃",
"embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。",
"embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。",
"embed.preview": "它会像这样显示出来:",
"emoji_button.activity": "活动",
"emoji_button.custom": "自定义",
@ -161,15 +161,15 @@
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点",
"empty_column.account_suspended": "账户已停用",
"empty_column.account_timeline": "这里没有帖子",
"empty_column.account_timeline": "这里没有嘟文",
"empty_column.account_unavailable": "个人资料不可用",
"empty_column.blocks": "你还未屏蔽任何用户。",
"empty_column.bookmarked_statuses": "你还未将任何帖子加入书签。在你添加书签后,帖子将显示在此。",
"empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。",
"empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!",
"empty_column.direct": "你还未使用过私信。当你发出或者收到私信时,它将显示在此。",
"empty_column.domain_blocks": "目前没有被隐藏的站点。",
"empty_column.domain_blocks": "暂且没有被屏蔽的站点。",
"empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!",
"empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。",
"empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。",
"empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。",
"empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。",
"empty_column.follow_requests": "你没有收到新的关注请求。收到后将显示在此。",
@ -180,7 +180,7 @@
"empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。",
"empty_column.mutes": "你没有隐藏任何用户。",
"empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。",
"empty_column.public": "这里什么都没有!写一些公开帖子,或者关注其他服务器的用户后,这里就会有嘟文出现了",
"empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了",
"error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。",
"error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。",
"error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。",
@ -191,14 +191,14 @@
"explore.suggested_follows": "为你推荐",
"explore.title": "探索",
"explore.trending_links": "最新消息",
"explore.trending_statuses": "帖子",
"explore.trending_statuses": "嘟文",
"explore.trending_tags": "话题标签",
"follow_recommendations.done": "完成",
"follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。",
"follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!",
"follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!",
"follow_request.authorize": "授权",
"follow_request.reject": "拒绝",
"follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。",
"follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。",
"generic.saved": "已保存",
"getting_started.developers": "开发",
"getting_started.directory": "用户目录",
@ -233,30 +233,30 @@
"keyboard_shortcuts.description": "说明",
"keyboard_shortcuts.direct": "打开私信栏",
"keyboard_shortcuts.down": "在列表中让光标下移",
"keyboard_shortcuts.enter": "展开帖子",
"keyboard_shortcuts.favourite": "喜欢帖子",
"keyboard_shortcuts.favourites": "打开喜欢的帖子列表",
"keyboard_shortcuts.enter": "展开嘟文",
"keyboard_shortcuts.favourite": "喜欢嘟文",
"keyboard_shortcuts.favourites": "打开喜欢的嘟文列表",
"keyboard_shortcuts.federated": "打开跨站时间轴",
"keyboard_shortcuts.heading": "快捷键列表",
"keyboard_shortcuts.home": "打开主页时间轴",
"keyboard_shortcuts.hotkey": "快捷键",
"keyboard_shortcuts.legend": "显示此列表",
"keyboard_shortcuts.local": "打开本站时间轴",
"keyboard_shortcuts.mention": "提及作者",
"keyboard_shortcuts.muted": "打开已隐藏用户列表",
"keyboard_shortcuts.mention": "提及嘟文作者",
"keyboard_shortcuts.muted": "打开已静音的用户列表",
"keyboard_shortcuts.my_profile": "打开你的个人资料",
"keyboard_shortcuts.notifications": "打开通知栏",
"keyboard_shortcuts.open_media": "打开媒体",
"keyboard_shortcuts.pinned": "打开置顶帖子列表",
"keyboard_shortcuts.pinned": "打开置顶嘟文列表",
"keyboard_shortcuts.profile": "打开作者的个人资料",
"keyboard_shortcuts.reply": "回复帖子",
"keyboard_shortcuts.reply": "回复嘟文",
"keyboard_shortcuts.requests": "打开关注请求列表",
"keyboard_shortcuts.search": "选择搜索框",
"keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文",
"keyboard_shortcuts.start": "打开“开始使用”栏",
"keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
"keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体",
"keyboard_shortcuts.toot": "发布新帖子",
"keyboard_shortcuts.toot": "发送新嘟文",
"keyboard_shortcuts.unfocus": "取消输入/搜索",
"keyboard_shortcuts.up": "在列表中让光标上移",
"lightbox.close": "关闭",
@ -264,6 +264,8 @@
"lightbox.expand": "放大查看图片",
"lightbox.next": "下一个",
"lightbox.previous": "上一个",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "添加到列表",
"lists.account.remove": "从列表中移除",
"lists.delete": "删除列表",
@ -289,7 +291,7 @@
"navigation_bar.blocks": "已屏蔽的用户",
"navigation_bar.bookmarks": "书签",
"navigation_bar.community_timeline": "本站时间轴",
"navigation_bar.compose": "撰写新帖子",
"navigation_bar.compose": "撰写新嘟文",
"navigation_bar.direct": "私信",
"navigation_bar.discover": "发现",
"navigation_bar.domain_blocks": "已屏蔽的域名",
@ -305,20 +307,20 @@
"navigation_bar.logout": "登出",
"navigation_bar.mutes": "已隐藏的用户",
"navigation_bar.personal": "个人",
"navigation_bar.pins": "置顶帖子",
"navigation_bar.pins": "置顶嘟文",
"navigation_bar.preferences": "首选项",
"navigation_bar.public_timeline": "跨站公共时间轴",
"navigation_bar.security": "安全",
"notification.admin.sign_up": "{name} 已注册",
"notification.favourite": "{name} 喜欢了你的帖子",
"notification.favourite": "{name} 喜欢了你的嘟文",
"notification.follow": "{name} 开始关注你",
"notification.follow_request": "{name} 向你发送了关注请求",
"notification.mention": "{name} 提及了你",
"notification.own_poll": "你的投票已经结束",
"notification.poll": "你参与的一个投票已经结束",
"notification.reblog": "{name} 转嘟了你的嘟文",
"notification.status": "{name} 刚刚发",
"notification.update": "{name} 编辑了帖子",
"notification.status": "{name} 刚刚发",
"notification.update": "{name} 编辑了嘟文",
"notifications.clear": "清空通知列表",
"notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
"notifications.column_settings.admin.sign_up": "新注册:",
@ -390,7 +392,7 @@
"relative_time.today": "今天",
"reply_indicator.cancel": "取消",
"report.block": "屏蔽",
"report.block_explanation": "你将到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。",
"report.block_explanation": "你将无法看到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。",
"report.categories.other": "其他",
"report.categories.spam": "垃圾信息",
"report.categories.violation": "内容违反一条或多条服务器规则",
@ -402,8 +404,8 @@
"report.comment.title": "还有什么你认为我们应该知道的吗?",
"report.forward": "转发举报至 {target}",
"report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
"report.mute": "静音",
"report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的帖子,但他们不会知道他们被静音了。",
"report.mute": "隐藏",
"report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的嘟文,但他们不会知道你忽略了来自他们的信息。",
"report.next": "下一步",
"report.placeholder": "备注",
"report.reasons.dislike": "我不喜欢它",
@ -445,8 +447,8 @@
"status.block": "屏蔽 @{name}",
"status.bookmark": "添加到书签",
"status.cancel_reblog_private": "取消转贴",
"status.cannot_reblog": "此贴不允许被转贴",
"status.copy": "复制帖子链接",
"status.cannot_reblog": "这条嘟文不允许被转嘟",
"status.copy": "复制嘟文链接",
"status.delete": "删除",
"status.detailed_status": "详细的对话视图",
"status.direct": "私信 @{name}",
@ -463,15 +465,15 @@
"status.mention": "提及 @{name}",
"status.more": "更多",
"status.mute": "隐藏 @{name}",
"status.mute_conversation": "将此对话静音",
"status.open": "展开此贴",
"status.pin": "在个人资料页面置顶",
"status.pinned": "置顶帖子",
"status.mute_conversation": "禁用此对话的消息提醒",
"status.open": "展开嘟文",
"status.pin": "固定在个人资料页面上",
"status.pinned": "置顶嘟文",
"status.read_more": "查看更多",
"status.reblog": "转嘟",
"status.reblog_private": "转(可见者不变)",
"status.reblogged_by": "{name} 转了",
"status.reblogs.empty": "没有人转贴过此贴。如果有人转贴了将显示在此。",
"status.reblog_private": "转(可见者不变)",
"status.reblogged_by": "{name} 转了",
"status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。",
"status.redraft": "删除并重新编辑",
"status.remove_bookmark": "移除书签",
"status.reply": "回复",
@ -485,8 +487,8 @@
"status.show_more_all": "显示全部内容",
"status.show_thread": "显示全部对话",
"status.uncached_media_warning": "暂不可用",
"status.unmute_conversation": "将此对话解除静音",
"status.unpin": "在个人资料页面取消置顶",
"status.unmute_conversation": "恢复此对话的通知提醒",
"status.unpin": "从个人资料页面上取消固定",
"suggestions.dismiss": "关闭建议",
"suggestions.header": "你可能会感兴趣…",
"tabs_bar.federated_timeline": "跨站",
@ -502,7 +504,7 @@
"timeline_hint.remote_resource_not_displayed": "不会显示来自其它服务器的 {resource}",
"timeline_hint.resources.followers": "关注者",
"timeline_hint.resources.follows": "关注",
"timeline_hint.resources.statuses": "更早的帖子",
"timeline_hint.resources.statuses": "更早的嘟文",
"trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论",
"trends.trending_now": "现在流行",
"ui.beforeunload": "如果你现在离开 Mastodon你的草稿内容将会丢失。",
@ -540,5 +542,5 @@
"video.mute": "静音",
"video.pause": "暂停",
"video.play": "播放",
"video.unmute": "取消静音"
"video.unmute": "解除禁音"
}

@ -264,6 +264,8 @@
"lightbox.expand": "擴大檢視",
"lightbox.next": "下一頁",
"lightbox.previous": "上一頁",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "新增到列表",
"lists.account.remove": "從列表刪除",
"lists.delete": "刪除列表",

@ -25,7 +25,7 @@
"account.hide_reblogs": "隱藏來自 @{name} 的轉嘟",
"account.joined": "加入於 {date}",
"account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限",
"account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳的人。",
"account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳的人。",
"account.media": "媒體",
"account.mention": "提及 @{name}",
"account.moved_to": "{name} 已遷移至:",
@ -95,7 +95,7 @@
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。",
"compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。",
"compose_form.lock_disclaimer": "您的帳戶尚未 {locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。",
"compose_form.lock_disclaimer": "您的帳號尚未 {locked}。任何人皆能跟隨您並看到您設定成只有跟隨者能看的嘟文。",
"compose_form.lock_disclaimer.lock": "上鎖",
"compose_form.placeholder": "正在想些什麼嗎?",
"compose_form.poll.add_option": "新增選項",
@ -124,7 +124,7 @@
"confirmations.discard_edit_media.confirm": "捨棄",
"confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
"confirmations.domain_block.confirm": "隱藏整個域名",
"confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
"confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
"confirmations.logout.confirm": "登出",
"confirmations.logout.message": "您確定要登出嗎?",
"confirmations.mute.confirm": "靜音",
@ -160,7 +160,7 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
"empty_column.account_suspended": "帳被暫停",
"empty_column.account_suspended": "帳被暫停",
"empty_column.account_timeline": "這裡還沒有嘟文!",
"empty_column.account_unavailable": "無法取得個人檔案",
"empty_column.blocks": "您還沒有封鎖任何使用者。",
@ -198,7 +198,7 @@
"follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!",
"follow_request.authorize": "授權",
"follow_request.reject": "拒絕",
"follow_requests.unlocked_explanation": "即便您的帳戶未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳戶的跟隨請求。",
"follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。",
"generic.saved": "已儲存",
"getting_started.developers": "開發者",
"getting_started.directory": "個人檔案目錄",
@ -206,7 +206,7 @@
"getting_started.heading": "開始使用",
"getting_started.invite": "邀請使用者",
"getting_started.open_source_notice": "Mastodon 是開源軟體。您可以在 GitHub {github} 上貢獻或是回報問題。",
"getting_started.security": "帳安全性設定",
"getting_started.security": "帳安全性設定",
"getting_started.terms": "服務條款",
"hashtag.column_header.tag_mode.all": "以及 {additional}",
"hashtag.column_header.tag_mode.any": "或是 {additional}",
@ -264,6 +264,8 @@
"lightbox.expand": "展開圖片檢視框",
"lightbox.next": "下一步",
"lightbox.previous": "上一步",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
"lists.account.add": "新增至列表",
"lists.account.remove": "從列表中移除",
"lists.delete": "刪除列表",
@ -401,7 +403,7 @@
"report.close": "已完成",
"report.comment.title": "有什麼其他您想讓我們知道的嗎?",
"report.forward": "轉寄到 {target}",
"report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?",
"report.forward_hint": "這個帳號屬於其他伺服器。要向該伺服器發送匿名的檢舉訊息嗎?",
"report.mute": "靜音",
"report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。",
"report.next": "繼續",
@ -428,10 +430,10 @@
"report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。",
"search.placeholder": "搜尋",
"search_popout.search_format": "進階搜尋格式",
"search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳顯示名稱和主題標籤。",
"search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳顯示名稱和主題標籤。",
"search_popout.tips.hashtag": "主題標籤",
"search_popout.tips.status": "嘟文",
"search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳名稱與標籤",
"search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳名稱與標籤",
"search_popout.tips.user": "使用者",
"search_results.accounts": "使用者",
"search_results.all": "全部",

@ -3,6 +3,7 @@
class ActivityPub::Activity
include JsonLdHelper
include Redisable
include Lockable
SUPPORTED_TYPES = %w(Note Question).freeze
CONVERTED_TYPES = %w(Image Audio Video Article Page Event).freeze
@ -157,22 +158,6 @@ class ActivityPub::Activity
end
end
def lock_or_return(key, expire_after = 2.hours.seconds)
yield if redis.set(key, true, nx: true, ex: expire_after)
ensure
redis.del(key)
end
def lock_or_fail(key, expire_after = 15.minutes.seconds)
RedisLock.acquire({ redis: redis, key: key, autorelease: expire_after }) do |lock|
if lock.acquired?
yield
else
raise Mastodon::RaceConditionError
end
end
end
def fetch?
!@options[:delivery]
end

@ -4,7 +4,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
def perform
return reject_payload! if delete_arrived_first?(@json['id']) || !related_to_local_activity?
lock_or_fail("announce:#{@object['id']}") do
with_lock("announce:#{value_or_id(@object)}") do
original_status = status_from_object
return reject_payload! if original_status.nil? || !announceable?(original_status)

@ -47,7 +47,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def create_status
return reject_payload! if unsupported_object_type? || invalid_origin?(object_uri) || tombstone_exists? || !related_to_local_activity?
lock_or_fail("create:#{object_uri}") do
with_lock("create:#{object_uri}") do
return if delete_arrived_first?(object_uri) || poll_vote?
@status = find_existing_status
@ -315,7 +315,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
poll = replied_to_status.preloadable_poll
already_voted = true
lock_or_fail("vote:#{replied_to_status.poll_id}:#{@account.id}") do
with_lock("vote:#{replied_to_status.poll_id}:#{@account.id}") do
already_voted = poll.votes.where(account: @account).exists?
poll.votes.create!(account: @account, choice: poll.options.index(@object['name']), uri: object_uri)
end

@ -12,7 +12,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
private
def delete_person
lock_or_return("delete_in_progress:#{@account.id}") do
with_lock("delete_in_progress:#{@account.id}", autorelease: 2.hours, raise_on_failure: false) do
DeleteAccountService.new.call(@account, reserve_username: false, skip_activitypub: true)
end
end
@ -20,14 +20,14 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
def delete_note
return if object_uri.nil?
lock_or_return("delete_status_in_progress:#{object_uri}", 5.minutes.seconds) do
with_lock("delete_status_in_progress:#{object_uri}", raise_on_failure: false) do
unless invalid_origin?(object_uri)
# This lock ensures a concurrent `ActivityPub::Activity::Create` either
# does not create a status at all, or has finished saving it to the
# database before we try to load it.
# Without the lock, `delete_later!` could be called after `delete_arrived_first?`
# and `Status.find` before `Status.create!`
lock_or_fail("create:#{object_uri}") { delete_later!(object_uri) }
with_lock("create:#{object_uri}") { delete_later!(object_uri) }
Tombstone.find_or_create_by(uri: object_uri, account: @account)
end

@ -15,6 +15,7 @@
class AccountMigration < ApplicationRecord
include Redisable
include Lockable
COOLDOWN_PERIOD = 30.days.freeze
@ -41,12 +42,8 @@ class AccountMigration < ApplicationRecord
return false unless errors.empty?
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
save
else
raise Mastodon::RaceConditionError
end
with_lock("account_migration:#{account.id}") do
save
end
end
@ -83,8 +80,4 @@ class AccountMigration < ApplicationRecord
def validate_migration_cooldown
errors.add(:base, I18n.t('migrations.errors.on_cooldown')) if account.migrations.within_cooldown.exists?
end
def lock_options
{ redis: redis, key: "account_migration:#{account.id}" }
end
end

@ -0,0 +1,19 @@
# frozen_string_literal: true
module Lockable
# @param [String] lock_name
# @param [ActiveSupport::Duration] autorelease Automatically release the lock after this time
# @param [Boolean] raise_on_failure Raise an error if a lock cannot be acquired, or fail silently
# @raise [Mastodon::RaceConditionError]
def with_lock(lock_name, autorelease: 15.minutes, raise_on_failure: true)
with_redis do |redis|
RedisLock.acquire(redis: redis, key: "lock:#{lock_name}", autorelease: autorelease.seconds) do |lock|
if lock.acquired?
yield
elsif raise_on_failure
raise Mastodon::RaceConditionError, "Could not acquire lock for #{lock_name}, try again later"
end
end
end
end
end

@ -1,11 +1,11 @@
# frozen_string_literal: true
module Redisable
extend ActiveSupport::Concern
private
def redis
Thread.current[:redis] ||= RedisConfiguration.pool.checkout
end
def with_redis(&block)
RedisConfiguration.with(&block)
end
end

@ -4,6 +4,7 @@ class ActivityPub::ProcessAccountService < BaseService
include JsonLdHelper
include DomainControlHelper
include Redisable
include Lockable
# Should be called with confirmed valid JSON
# and WebFinger-resolved username and domain
@ -17,22 +18,18 @@ class ActivityPub::ProcessAccountService < BaseService
@domain = domain
@collections = {}
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
@account = Account.remote.find_by(uri: @uri) if @options[:only_key]
@account ||= Account.find_remote(@username, @domain)
@old_public_key = @account&.public_key
@old_protocol = @account&.protocol
@suspension_changed = false
create_account if @account.nil?
update_account
process_tags
process_duplicate_accounts! if @options[:verified_webfinger]
else
raise Mastodon::RaceConditionError
end
with_lock("process_account:#{@uri}") do
@account = Account.remote.find_by(uri: @uri) if @options[:only_key]
@account ||= Account.find_remote(@username, @domain)
@old_public_key = @account&.public_key
@old_protocol = @account&.protocol
@suspension_changed = false
create_account if @account.nil?
update_account
process_tags
process_duplicate_accounts! if @options[:verified_webfinger]
end
return if @account.nil?
@ -289,10 +286,6 @@ class ActivityPub::ProcessAccountService < BaseService
!@old_protocol.nil? && @old_protocol != @account.protocol
end
def lock_options
{ redis: redis, key: "process_account:#{@uri}", autorelease: 15.minutes.seconds }
end
def process_tags
return if @json['tag'].blank?

@ -3,6 +3,7 @@
class ActivityPub::ProcessStatusUpdateService < BaseService
include JsonLdHelper
include Redisable
include Lockable
def call(status, json)
raise ArgumentError, 'Status has unsaved changes' if status.changed?
@ -33,41 +34,32 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
last_edit_date = @status.edited_at.presence || @status.created_at
# Only allow processing one create/update per status at a time
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
Status.transaction do
record_previous_edit!
update_media_attachments!
update_poll!
update_immediate_attributes!
update_metadata!
create_edits!
end
with_lock("create:#{@uri}") do
Status.transaction do
record_previous_edit!
update_media_attachments!
update_poll!
update_immediate_attributes!
update_metadata!
create_edits!
end
queue_poll_notifications!
queue_poll_notifications!
next unless significant_changes?
next unless significant_changes?
reset_preview_card!
broadcast_updates!
else
raise Mastodon::RaceConditionError
end
reset_preview_card!
broadcast_updates!
end
forward_activity! if significant_changes? && @status_parser.edited_at > last_edit_date
end
def handle_implicit_update!
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
update_poll!(allow_significant_changes: false)
else
raise Mastodon::RaceConditionError
end
with_lock("create:#{@uri}") do
update_poll!(allow_significant_changes: false)
queue_poll_notifications!
end
queue_poll_notifications!
end
def update_media_attachments!
@ -241,10 +233,6 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
equals_or_includes_any?(@json['type'], %w(Note Question))
end
def lock_options
{ redis: redis, key: "create:#{@uri}", autorelease: 15.minutes.seconds }
end
def record_previous_edit!
@previous_edit = @status.build_snapshot(at_time: @status.created_at, rate_limit: false) if @status.edits.empty?
end

@ -2,6 +2,7 @@
class FetchLinkCardService < BaseService
include Redisable
include Lockable
URL_PATTERN = %r{
(#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceding chars
@ -22,13 +23,9 @@ class FetchLinkCardService < BaseService
@url = @original_url.to_s
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
@card = PreviewCard.find_by(url: @url)
process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
else
raise Mastodon::RaceConditionError
end
with_lock("fetch:#{@original_url}") do
@card = PreviewCard.find_by(url: @url)
process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
end
attach_card if @card&.persisted?
@ -155,8 +152,4 @@ class FetchLinkCardService < BaseService
@card.assign_attributes(link_details_extractor.to_preview_card_attributes)
@card.save_with_optional_image! unless @card.title.blank? && @card.html.blank?
end
def lock_options
{ redis: redis, key: "fetch:#{@original_url}", autorelease: 15.minutes.seconds }
end
end

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

Loading…
Cancel
Save