Merge commit 'f99e05710ea06cf10bbd3fb64ae8c00b095cb455' into glitch-soc/merge-upstream

Conflicts:
- `.rubocop_todo.yml`:
  Took upstream's version of the conflicting lines.
shrike
Claire 2023-12-21 19:24:10 +01:00
commit f5b7307890
65 changed files with 2346 additions and 661 deletions

View File

@ -105,6 +105,10 @@ Rails/Exit:
- 'config/boot.rb'
- 'lib/mastodon/cli/*.rb'
Rails/SkipsModelValidations:
Exclude:
- 'db/*migrate/**/*'
# Reason: Some single letter camel case files shouldn't be split
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
RSpec/FilePath:

View File

@ -26,7 +26,7 @@ Lint/NonLocalExitFromIterator:
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 130
Max: 100
# Configuration parameters: CountBlocks, Max.
Metrics/BlockNesting:
@ -181,22 +181,6 @@ Rails/SkipsModelValidations:
- 'app/workers/move_worker.rb'
- 'app/workers/scheduler/ip_cleanup_scheduler.rb'
- 'app/workers/scheduler/scheduled_statuses_scheduler.rb'
- 'db/migrate/20161203164520_add_from_account_id_to_notifications.rb'
- 'db/migrate/20170105224407_add_shortcode_to_media_attachments.rb'
- 'db/migrate/20170209184350_add_reply_to_statuses.rb'
- 'db/migrate/20170304202101_add_type_to_media_attachments.rb'
- 'db/migrate/20180528141303_fix_accounts_unique_index.rb'
- 'db/migrate/20180609104432_migrate_web_push_subscriptions2.rb'
- 'db/migrate/20181207011115_downcase_custom_emoji_domains.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/migrate/20191007013357_update_pt_locales.rb'
- 'db/migrate/20220316233212_update_kurdish_locales.rb'
- 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb'
- 'db/post_migrate/20200917193528_migrate_notifications_type.rb'
- 'db/post_migrate/20201017234926_fill_account_suspension_origin.rb'
- 'db/post_migrate/20220617202502_migrate_roles.rb'
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/lib/activitypub/activity/follow_spec.rb'
@ -378,22 +362,6 @@ Style/IfUnlessModifier:
- 'config/initializers/devise.rb'
- 'config/initializers/ffmpeg.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: InverseMethods, InverseBlocks.
Style/InverseMethods:
Exclude:
- 'app/models/custom_filter.rb'
- 'app/services/update_account_service.rb'
- 'spec/controllers/activitypub/replies_controller_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: line_count_dependent, lambda, literal
Style/Lambda:
Exclude:
- 'config/initializers/simple_form.rb'
- 'config/routes.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/MapToHash:
Exclude:

View File

@ -168,7 +168,7 @@ GEM
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.4)
bigdecimal (3.1.5)
bindata (2.4.15)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
@ -197,7 +197,7 @@ GEM
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.3.5)
chewy (7.4.0)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch-dsl
@ -759,7 +759,7 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
test-prof (1.3.0)
test-prof (1.3.1)
thor (1.3.0)
tilt (2.3.0)
timeout (0.4.1)

View File

@ -1 +1,145 @@
{}
{
"about.blocks": "Mga pinatimping server",
"about.contact": "Kontak:",
"about.disclaimer": "Ang Mastodon ay software na malaya at bukas-na-pinagmulan, at isang tatak-pangkalakal ng Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Hindi makuha ang dahilan",
"about.domain_blocks.silenced.title": "Limitado",
"about.domain_blocks.suspended.title": "Suspendido",
"about.rules": "Mga alituntunin ng server",
"account.account_note_header": "Tala",
"account.add_or_remove_from_list": "I-dagdag o tanggalin mula sa mga listahan",
"account.badges.bot": "Pakusa",
"account.badges.group": "Pangkat",
"account.block": "Hadlangan si @{name}",
"account.block_domain": "Hadlangan ang domain na {domain}",
"account.block_short": "Hadlangan",
"account.blocked": "Hinadlangan",
"account.browse_more_on_origin_server": "Tingnan pa sa pangunahing profile",
"account.cancel_follow_request": "I-kansela ang pagsunod",
"account.copy": "I-sipi ang kawing sa profile",
"account.direct": "Palihim banggitin si @{name}",
"account.disable_notifications": "I-tigil ang pagpapaalam sa akin tuwing nagpopost si @{name}",
"account.domain_blocked": "Hinadlangan ang domain",
"account.edit_profile": "Baguhin ang profile",
"account.enable_notifications": "Ipaalam sa akin kapag nag-post si @{name}",
"account.endorse": "I-tampok sa profile",
"account.featured_tags.last_status_at": "Huling post noong {date}",
"account.featured_tags.last_status_never": "Walang mga post",
"account.featured_tags.title": "Nakatampok na hashtag ni {name}",
"account.follow": "Sundan",
"account.followers": "Mga tagasunod",
"account.followers.empty": "Wala pang sumusunod sa tagagamit na ito.",
"account.following": "Sinusundan",
"account.follows.empty": "Wala pang sinusundan ang tagagamit na ito.",
"account.follows_you": "Sinusunod ka",
"account.go_to_profile": "Pumunta sa profile",
"account.hide_reblogs": "Itago ang mga pagpapalakas mula sa {name}",
"account.in_memoriam": "Sa Alaala Ni.",
"account.joined_short": "Sumali",
"account.languages": "Palitan ang mga nakasumuscribing wika",
"account.link_verified_on": "Sinuri ang pagmamay-ari ng kawing ito sa {date}",
"account.locked_info": "Nakakandado ang pagsasariling kalagayan ng account na ito. Manomano sinusuri ng may-ari kung sino ang maaaring sumunod sa kanya.",
"account.media": "Medya",
"account.mention": "Banggitin si @{name}",
"account.moved_to": "Ipinahihiwatig ni {name} na ang kanilang bagong account ngayon ay:",
"bundle_column_error.error.title": "Naku!",
"bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.",
"bundle_column_error.network.title": "Kamaliang network",
"bundle_column_error.retry": "Subukang muli",
"bundle_column_error.return": "Bumalik sa tahanan",
"bundle_column_error.routing.body": "Hindi mahanap ang hiniling na pahina. Sigurado ka ba na ang URL sa address bar ay tama?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "I-sara",
"bundle_modal_error.message": "May nangyaring mali habang kinakarga ang bahaging ito.",
"bundle_modal_error.retry": "Subukang muli",
"closed_registrations.other_server_instructions": "Dahil desentralisado ang Mastodon, pwede kang gumawa ng account sa iba pang server at makipag-ugnayan pa rin dito.",
"closed_registrations_modal.description": "Hindi pa pwedeng gumawa ng account sa {domain}, pero tandaan na hindi mo kailangan ng account partikular sa {domain} para gamitin ang Mastodon.",
"closed_registrations_modal.find_another_server": "Maghanap ng iba pang server",
"closed_registrations_modal.preamble": "Dahil desentralisado ang Mastodon, kahit saan ka pa gumawa ng account, maaari ka pa ring sumunod at makipag-ugnayan sa kahit-sino rito sa server na ito. Pwede mo pang i-host nang pasarili!",
"closed_registrations_modal.title": "Pagrerehistro sa Mastodon",
"column.about": "Tungkol dito",
"column.blocks": "Nakahadlang na mga tagagamit",
"column.bookmarks": "Mga bookmark",
"column.community": "Lokal na timeline",
"column.direct": "Mga palihim na banggit",
"column.directory": "Tingnan ang mga profile",
"column.domain_blocks": "Nakahadlang na mga domain",
"column.favourites": "Mga paborito",
"column.firehose": "Mga live feed",
"column.follow_requests": "Mga hiling para sundan",
"column.home": "Tahanan",
"column.lists": "Mga listahan",
"column.mutes": "Mga pinatahimik na tagagamit",
"column.notifications": "Mga abiso",
"column.pins": "Mga nakapaskil na post",
"column.public": "Pinagsamang timeline",
"column_back_button.label": "Bumalik",
"column_header.hide_settings": "I-tago ang mga setting",
"column_header.moveLeft_settings": "I-lipat ang hanay pakaliwa",
"column_header.moveRight_settings": "I-lipat ang hanay pakanan",
"column_header.pin": "I-paskil",
"column_header.show_settings": "Ipakita ang mga setting",
"column_header.unpin": "Tanggalin sa pagkapaskil",
"column_subheading.settings": "Mga setting",
"community.column_settings.local_only": "Lokal lamang",
"community.column_settings.media_only": "Medya Lamang",
"community.column_settings.remote_only": "Liblib lamang",
"compose.language.change": "Magpalit ng wika",
"compose.language.search": "Maghanap ng mga wika...",
"compose.published.body": "Nailathala ang post.",
"compose.published.open": "Buksan",
"compose.saved.body": "Nai-save ang post.",
"compose_form.direct_message_warning_learn_more": "Matuto pa",
"compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.",
"compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.",
"copy_icon_button.copied": "Sinipi sa clipboard",
"copypaste.copied": "Sinipi",
"copypaste.copy_to_clipboard": "I-sipi sa clipboard",
"directory.federated": "Mula sa kilalang fediverse",
"directory.local": "Mula sa {domain} lamang",
"directory.new_arrivals": "Mga bagong dating",
"directory.recently_active": "Kamakailang aktibo",
"disabled_account_banner.account_settings": "Mga setting ng account",
"disabled_account_banner.text": "Ang iyong account na {disabledAccount} ay hindi pinapagana ngayon.",
"dismissable_banner.community_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong ang mga account hinohost ng {domain}.",
"dismissable_banner.dismiss": "Alisin",
"dismissable_banner.explore_links": "Ito ang mga balitang kwento na pinaka-binabahagi sa social web ngayon. Ang mga mas bagong balitang kwento na pinost ng mas marami pang mga iba't ibang tao ay tinataasan ng antas.",
"dismissable_banner.explore_statuses": "Ito ang mga sumisikat na mga post sa iba't ibang bahagi ng social web ngayon. Ang mga mas bagong post na mas marami ang mga pagpapalakas at paborito ay tinataasan ng antas.",
"dismissable_banner.explore_tags": "Ito ang mga sumisikat na mga hashtag sa iba't ibang bahagi ng social web ngayon. Ang mga hashtag ginagamit ng mas maraming mga iba't ibang tao ay tinataasan ng antas.",
"dismissable_banner.public_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong nasa social web na sinusundan ng mga tao sa {domain}.",
"embed.instructions": "I-embed ang post na ito sa iyong pook-sapot sa pamamagitan ng pagsipi ng kodigo sa ilalim.",
"embed.preview": "Ito ang magiging itsura:",
"emoji_button.activity": "Aktibidad",
"emoji_button.clear": "Linisin",
"emoji_button.custom": "Pasadya",
"emoji_button.flags": "Mga watawat",
"emoji_button.food": "Pagkain at Inumin",
"emoji_button.label": "Maglagay ng emoji",
"emoji_button.nature": "Kalikasan",
"emoji_button.not_found": "Walang mahanap na mga tugmang emoji",
"emoji_button.objects": "Mga bagay",
"emoji_button.people": "Mga tao",
"emoji_button.recent": "Madalas na ginagamit",
"emoji_button.search": "Maghanap...",
"emoji_button.search_results": "Resulta ng paghahanap",
"emoji_button.symbols": "Mga tanda",
"emoji_button.travel": "Paglakbay at Mga Lugar",
"empty_column.account_hides_collections": "Pinili ng tagagamit na ito na hindi makuha ang impormasyong ito",
"empty_column.account_suspended": "Sinuspinde ang account",
"empty_column.account_timeline": "Walang mga post dito!",
"empty_column.account_unavailable": "Hindi makuha ang profile",
"empty_column.blocks": "Hindi ka pa naghahadlang ng sinumang tagagamit.",
"empty_column.bookmarked_statuses": "Wala ka pang naka-bookmark na post. Kapag nag-bookmark ka ng isa, makikita yun dito.",
"empty_column.community": "Walang laman ang lokal na timeline. Magsulat ng anuman papubliko para makaandar tayo!",
"empty_column.direct": "Wala ka pang mga palihim na banggit. Kapag nagpadala o tumanggap ka ng isa, makikita yun dito.",
"empty_column.domain_blocks": "Wala pang nakahadlang na domain.",
"empty_column.explore_statuses": "Wala pang sumisikat sa ngayon. Balik na lang sa muli!",
"empty_column.favourited_statuses": "Wala ka pang mga paboritong post. Kapag nag-paborito ka ng isa, makikita yun dito.",
"empty_column.favourites": "Wala pang may paborito ng post na ito. Kung may sinumang nagpaborito, makikita sila rito.",
"empty_column.follow_requests": "Wala ka pang mga hiling para sundan ka. Kapag nakatanggap ka ng isa, makikita yun dito.",
"empty_column.followed_tags": "Wala ka pang sinusunod na hashtag. Kapag may sinundan ka na, makikita sila rito.",
"empty_column.hashtag": "Wala pang laman ang hashtag na ito.",
"empty_column.home": "Walang laman ang timeline ng tahanan mo! Sumunod sa marami pang tao para mapunan ito.",
"empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.",
"empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito."
}

View File

@ -0,0 +1,23 @@
{
"account.add_or_remove_from_list": "Adder o remover ab listas",
"account.copy": "Copiar ligamine a profilo",
"bundle_column_error.network.title": "Error de rete",
"bundle_modal_error.close": "Clauder",
"column.home": "Initio",
"column_subheading.settings": "Parametros",
"compose.language.search": "Cercar linguas...",
"compose.published.open": "Aperir",
"confirmation_modal.cancel": "Cancellar",
"confirmations.logout.confirm": "Clauder le session",
"copypaste.copy_to_clipboard": "Copiar al area de transferentia",
"dismissable_banner.dismiss": "Dimitter",
"firehose.local": "Iste servitor",
"footer.about": "A proposito de",
"home.pending_critical_update.link": "Vider actualisationes",
"keyboard_shortcuts.my_profile": "Aperir tu profilo",
"lightbox.close": "Clauder",
"lightbox.next": "Sequente",
"link_preview.author": "Per {name}",
"lists.account.add": "Adder al lista",
"navigation_bar.about": "A proposito de"
}

View File

@ -0,0 +1,392 @@
{
"about.blocks": "Moderat servitores",
"about.contact": "Contacter:",
"about.disclaimer": "Mastodon es programmatura líber e con fonte apert, e un marca de fabrica de Mastodon dGmbH.",
"about.domain_blocks.no_reason_available": "Rason ne disponibil",
"about.domain_blocks.preamble": "Mastodon generalmen possibilisa regardar li contenete de, e li interaction con usatores de quelcunc altri servitor in li fediverse. Ci trova se li exceptiones fat de ti-ci particulari servitor.",
"about.domain_blocks.silenced.explanation": "Generalmen, li profiles e contenete de ti-ci servitor ne va aparir, except si on sercha les explicitmen o optionalisa it per sequer.",
"about.domain_blocks.silenced.title": "Limitat",
"about.domain_blocks.suspended.explanation": "Necun data de ti-ci servitor va esser tractat, inmagasinat o exchangeat, quel inpossibilisa li interaction o comunication de usatores de ti-ci servitor.",
"about.domain_blocks.suspended.title": "Suspendet",
"about.not_available": "On ne ha disponibilisat ti-ci information sur ti-ci servitor.",
"about.powered_by": "Decentralisat social medie disponibilisat de {mastodon}",
"about.rules": "Regules del servitor",
"account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Adjunter o remover de listes",
"account.badges.bot": "Automatisat",
"account.badges.group": "Gruppe",
"account.block": "Bloccar @{name}",
"account.block_domain": "Bloccar domene {domain}",
"account.block_short": "Bloccar",
"account.blocked": "Bloccat",
"account.browse_more_on_origin_server": "Navigar plu sur li profil original",
"account.cancel_follow_request": "Anullar sequer",
"account.copy": "Copiar ligament al profil",
"account.direct": "Privatmen mentionar @{name}",
"account.disable_notifications": "Cessa notificar me quande @{name} posta",
"account.domain_blocked": "Domene bloccat",
"account.edit_profile": "Redacter profil",
"account.enable_notifications": "Notificar me quande @{name} posta",
"account.endorse": "Recomandar sur profil",
"account.featured_tags.last_status_at": "Ultim post ye {date}",
"account.featured_tags.last_status_never": "Null postas",
"account.featured_tags.title": "Recomandat hashtags de {name}",
"account.follow": "Sequer",
"account.followers": "Sequitores",
"account.followers.empty": "Ancor nequi seque ti-ci usator.",
"account.followers_counter": "{count, plural, one {{counter} Sequitor} other {{counter} Sequitor}}",
"account.following": "Sequent",
"account.following_counter": "{count, plural, one {{counter} Sequent} other {{counter} Sequent}}",
"account.follows.empty": "Ti-ci usator ancor ne seque quemcunc.",
"account.follows_you": "Seque te",
"account.go_to_profile": "Ear a profil",
"account.hide_reblogs": "Celar boosts de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Adheret",
"account.languages": "Changear lingues de subscrition",
"account.link_verified_on": "Proprietá de ti-ci ligament esset verificat ye {date}",
"account.locked_info": "Li statu de confidentialitá de ti-ci conto es configurat quam cludet. Li proprietario decide manualmen qui posse sequer.",
"account.media": "Medie",
"account.mention": "Mentionar @{name}",
"account.moved_to": "{name} ha indicat que su nov conto es ja:",
"account.mute": "Silentiar @{name}",
"account.mute_notifications_short": "Silentiar notificationes",
"account.mute_short": "Silentiar",
"account.muted": "Silentiat",
"account.no_bio": "Null description providet.",
"account.open_original_page": "Aperter li págine original",
"account.posts": "Postas",
"account.posts_with_replies": "Postas e replicas",
"account.report": "Raportar @{name}",
"account.requested": "Atendent aprobation. Cliccar por anullar li petition de sequer",
"account.requested_follow": "{name} ha petit sequer te",
"account.share": "Distribuer li profil de @{name}",
"account.show_reblogs": "Monstrar boosts de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Postas}}",
"account.unblock": "Desbloccar @{name}",
"account.unblock_domain": "Desbloccar domene {domain}",
"account.unblock_short": "Desbloccar",
"account.unendorse": "Ne recomandar sur profil",
"account.unfollow": "Dessequer",
"account.unmute": "Dessilentiar @{name}",
"account.unmute_notifications_short": "Dessilentiar notificationes",
"account.unmute_short": "Dessilentiar",
"account_note.placeholder": "Clicca por adjunter un nota",
"admin.dashboard.daily_retention": "Usator-retention per die pos registration",
"admin.dashboard.monthly_retention": "Usator-retention per mensu pos registration",
"admin.dashboard.retention.average": "Medial",
"admin.dashboard.retention.cohort": "Mensu de registration",
"admin.dashboard.retention.cohort_size": "Nov usatores",
"admin.impact_report.instance_accounts": "Conto-profiles to-ci vell deleter",
"admin.impact_report.instance_followers": "Sequitores queles nor usatores vell perdir",
"admin.impact_report.instance_follows": "Sequitores queles lor usatores vell perdir",
"admin.impact_report.title": "Resumate de impact",
"alert.rate_limited.message": "Ples reprovar pos {retry_time, time, medium}.",
"alert.rate_limited.title": "Frequentie limitat",
"alert.unexpected.message": "Un ínexpectat erra ha evenit.",
"alert.unexpected.title": "Ups!",
"announcement.announcement": "Proclamation",
"attachments_list.unprocessed": "(íntractat)",
"audio.hide": "Celar audio",
"autosuggest_hashtag.per_week": "{count} per semane",
"boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci",
"bundle_column_error.copy_stacktrace": "Copiar erra-raporte",
"bundle_column_error.error.body": "Li demandat págine ne posset esser rendit. Fórsan it es un problema in nor code, o un problema de compatibilitá con li navigator.",
"bundle_column_error.error.title": "O ve!",
"bundle_column_error.network.body": "Un erra evenit durant li cargation de ti-ci págine, possibilmen pro un temporari problema de tui conexion del internet o de ti-ci servitor.",
"bundle_column_error.network.title": "Erra de retage",
"bundle_column_error.retry": "Provar denov",
"bundle_column_error.return": "Retornar al comense",
"bundle_column_error.routing.body": "Li demandat págine ne trovat se. Esque tu es cert que li URL in li adresse-barre es corect?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Cluder",
"bundle_modal_error.message": "Alquo errat durant li cargation de ti-ci componente.",
"bundle_modal_error.retry": "Provar denov",
"closed_registrations.other_server_instructions": "Pro que Mastodon es decentralisat, on posse crear un conto che un altri servitor e ancor interacter con ti-ci.",
"closed_registrations_modal.description": "Crear un conto che {domain} ne es possibil actualmen, ma ples memorar que on ne besona un conto specificmen che {domain} por usar Mastodon.",
"closed_registrations_modal.find_another_server": "Serchar altri servitor",
"closed_registrations_modal.preamble": "Mastodon es descentralisat, do on posse ser e interacter con quicunc che ti-ci servitor, sin egarda de u on crea su conto. On mem posse self-albergar it!",
"closed_registrations_modal.title": "Registrar sur Mastodon",
"column.about": "Information",
"column.blocks": "Bloccat usatores",
"column.bookmarks": "Marcatores",
"column.community": "Local témpor-linea",
"column.direct": "Privat mentiones",
"column.directory": "Navigar profiles",
"column.domain_blocks": "Bloccat domenes",
"column.favourites": "Favorites",
"column.firehose": "Témpor-lineas",
"column.follow_requests": "Petitiones de sequer",
"column.home": "Comense",
"column.lists": "Listes",
"column.mutes": "Silentiat usatores",
"column.notifications": "Notificationes",
"column.pins": "Pinglat postas",
"column.public": "Federat témpor-linea",
"column_back_button.label": "Retornar",
"column_header.hide_settings": "Celar parametres",
"column_header.moveLeft_settings": "Mover columne al levul",
"column_header.moveRight_settings": "Mover columne al dextri",
"column_header.pin": "Pinglar",
"column_header.show_settings": "Monstrar parametres",
"column_header.unpin": "Despinglar",
"column_subheading.settings": "Parametres",
"community.column_settings.local_only": "Solmen local",
"community.column_settings.media_only": "Solmen medie",
"community.column_settings.remote_only": "Solmen external",
"compose.language.change": "Changear lingue",
"compose.language.search": "Serchar lingues...",
"compose.published.body": "Post publicat.",
"compose.published.open": "Aperter",
"compose.saved.body": "Post conservat.",
"compose_form.direct_message_warning_learn_more": "Aprender plu",
"compose_form.hashtag_warning": "Ti-ci post ne va esser listat sur quelcunc hashtag pro que it ne es public. Solmen public postas posse esser serchat per hashtag.",
"compose_form.lock_disclaimer": "Tui conto ne es {locked}. Quicunc posse sequer te por vider tui postas solmen por sequitores.",
"compose_form.lock_disclaimer.lock": "cludet",
"compose_form.placeholder": "Quo es in tui mente?",
"compose_form.poll.add_option": "Adjunter un option",
"compose_form.poll.duration": "Duration del balotation",
"compose_form.poll.option_placeholder": "Option {number}",
"compose_form.poll.remove_option": "Remover ti-ci option",
"compose_form.poll.switch_to_multiple": "Changea li balotation por permisser multiplic selectiones",
"compose_form.poll.switch_to_single": "Changea li balotation por permisser un singul selection",
"compose_form.publish": "Publicar",
"compose_form.publish_form": "Nov post",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Conservar changes",
"compose_form.spoiler.marked": "Remover avise pri li contenete",
"compose_form.spoiler.unmarked": "Adjunter avise pri li contenete",
"compose_form.spoiler_placeholder": "Scri tui avise ci",
"confirmation_modal.cancel": "Anullar",
"confirmations.block.block_and_report": "Bloccar & Raportar",
"confirmations.block.confirm": "Bloccar",
"confirmations.block.message": "Esque tu es cert que tu vole bloccar {name}?",
"confirmations.cancel_follow_request.confirm": "Retraer petition",
"confirmations.cancel_follow_request.message": "Esque tu es cert que tu vole retraer tui petition sequer {name}?",
"confirmations.delete.confirm": "Deleter",
"confirmations.delete.message": "Esque tu es cert que tu vole deleter ti-ci post?",
"confirmations.delete_list.confirm": "Deleter",
"confirmations.delete_list.message": "Esque tu es cert que tu vole permanentmen deleter ti-ci liste?",
"confirmations.discard_edit_media.confirm": "Forjettar",
"confirmations.discard_edit_media.message": "Tu have ínconservat changes al description de medie o al previse, forjettar les sin egarda?",
"confirmations.domain_block.confirm": "Bloccar li tot domene",
"confirmations.domain_block.message": "Esque tu es certissim que tu vole bloccar li tot {domain}? In mult casus, bloccar o silentiar quelc specific contos es suficent e preferibil. Tu ne va vider contenete de ti domene in quelcunc public témpor-linea o in tui notificationes. Tui sequitores de ti domene va esser removet.",
"confirmations.edit.confirm": "Redacter",
"confirmations.edit.message": "Redacter nu va remplazzar li missage quel tu actualmen composi. Esque tu es cert que tu vole proceder?",
"confirmations.logout.confirm": "Exear",
"confirmations.logout.message": "Vole tu vermen exear?",
"confirmations.mute.confirm": "Silentiar",
"confirmations.mute.explanation": "To-ci va celar postas de ilu e postas mentionant ilu, ma it ancor va permisser ilu vider tui postas e sequer te.",
"confirmations.mute.message": "Esque tu vermen vole silentiar {name}?",
"confirmations.redraft.confirm": "Deleter & redacter",
"confirmations.redraft.message": "Esque tu es cert que tu vole deleter ti-ci post e redacter it? Favorites e boosts va esser perdit, e replicas al post original va esser orfanat.",
"confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Responder nu va remplazzar li missage quel tu actualmen composi. Esque tu es cert que tu vole proceder?",
"confirmations.unfollow.confirm": "Dessequer",
"confirmations.unfollow.message": "Esque tu es cert que tu vole dessequer {name}?",
"conversation.delete": "Deleter conversation",
"conversation.mark_as_read": "Marcar quam leet",
"conversation.open": "Vider conversation",
"conversation.with": "Con {names}",
"copypaste.copied": "Copiat",
"directory.federated": "Del conosset fediverse",
"directory.local": "De solmen {domain}",
"directory.new_arrivals": "Nov arivantes",
"directory.recently_active": "Recentmen activ",
"disabled_account_banner.account_settings": "Parametres del conto",
"dismissable_banner.community_timeline": "Tis-ci es li postas max recent de gente con contos che {domain}.",
"dismissable_banner.dismiss": "Demisser",
"dismissable_banner.explore_links": "Tis-ci es li novas max distribuet che li social retage hodie. Novas plu nov, postat de plu diferent persones, es monstrat plu alt.",
"dismissable_banner.explore_statuses": "Tis-ci es postas del social retage queles es popular hodie. Nov postas con plu mult boosts e favorites es monstrat plu alt.",
"dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.",
"dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.",
"embed.instructions": "Inbedar ti-ci post per copiar li code in infra.",
"embed.preview": "Vi qualmen it va aspecter:",
"emoji_button.activity": "Activitá",
"emoji_button.clear": "Efaciar",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flaggas",
"emoji_button.food": "Manjage & Trincage",
"emoji_button.label": "Inserter emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "Null acordant emoji trovat",
"emoji_button.objects": "Objectes",
"emoji_button.people": "Gente",
"emoji_button.recent": "Frequentmen usat",
"emoji_button.search": "Sercha...",
"emoji_button.search_results": "Resultates de sercha",
"emoji_button.symbols": "Simboles",
"emoji_button.travel": "Viageation & Locos",
"empty_column.account_hides_collections": "Ti-ci usator ha selectet ne publicar ti-ci information",
"empty_column.account_suspended": "Conto suspendet",
"empty_column.account_timeline": "Null postas ci!",
"empty_column.account_unavailable": "Profil índisponibil",
"empty_column.blocks": "Tu ancor ha bloccat null usatores.",
"empty_column.bookmarked_statuses": "Tu ancor have null marcat postas. Quande tu marca un, it va aparir ci.",
"empty_column.community": "Li local témpor-linea es vacui. Scri alquo publicmen por initiar la festa!",
"empty_column.direct": "Tu ancor have null privat mentiones. Quande tu misse o recive un, it va aparir ci.",
"empty_column.domain_blocks": "Ancor hay null bloccat domenes.",
"empty_column.explore_statuses": "Nequo es popular actualmen. Retorna plu tarde!",
"empty_column.favourited_statuses": "Tu ancor have null favorit postas. Quande tu favoritisa un, it va aparir ci.",
"empty_column.favourites": "Ancor nequi ha favoritisat ti-ci posta. Quande alqui fa it, ilu va aparir ci.",
"empty_column.follow_requests": "Tu ancor have null petitiones de sequer. Quande tu recive un, it va aparir ci.",
"empty_column.followed_tags": "Tu ancor ha sequet null hashtags. Quande tu seque un, it va aparir ci.",
"empty_column.hashtag": "Hay nullcos en ti-ci hashtag ancor.",
"empty_column.home": "Tui initial témpor-linea es vacui! Sequer plu gente por plenar it.",
"empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.",
"empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.",
"empty_column.mutes": "Tu ancor ha silentiat null usatores.",
"empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.",
"empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci",
"error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitá in li navigator, ti-ci págine ne posset esser monstrat correctmen.",
"error.unexpected_crash.explanation_addons": "Ti-ci págine ne posset esser monstrat correctmen. Li error es probabilmen causat de un extension al navigator o instrumentes por automatic traduction.",
"error.unexpected_crash.next_steps": "Prova recargar li págine. Si to ne auxilia, tu fórsan posse usar Mastodon per un diferent navigator o aplication.",
"error.unexpected_crash.next_steps_addons": "Prova desactivisar les e recargar li págine. Si to ne auxilia, tu fórsan posse usar Mastodon per un diferent navigator o aplication.",
"errors.unexpected_crash.report_issue": "Raportar un problema",
"explore.search_results": "Resultates de sercha",
"explore.suggested_follows": "Gente",
"explore.title": "Explorar",
"explore.trending_links": "Novas",
"explore.trending_statuses": "Postas",
"explore.trending_tags": "Hashtags",
"filter_modal.added.context_mismatch_explanation": "Ti-ci filtre-categorie ne aplica al contextu in quel tu ha accessat ti-ci post. Si tu vole que li post es filtrat anc in ti-ci contextu, tu deve redacter li filtre.",
"filter_modal.added.context_mismatch_title": "Contextu íncompatibil!",
"filter_modal.added.expired_explanation": "Ti-ci filtre-categorie ha expirat, tu deve changear li date de expiration por far it aplicar.",
"filter_modal.added.expired_title": "Expirat filtre!",
"filter_modal.added.review_and_configure": "Por reviser e configurar ti-ci filtre-categorie, ea a {settings_link}.",
"filter_modal.added.review_and_configure_title": "Parametres pri filtres",
"filter_modal.added.settings_link": "págine por parametres",
"filter_modal.added.short_explanation": "Ti-ci post ha esset adjuntet al sequente filtre-categorie: {title}.",
"filter_modal.added.title": "Filtre adjuntet!",
"filter_modal.select_filter.context_mismatch": "ne aplica a ti-ci contextu",
"filter_modal.select_filter.expired": "expirat",
"filter_modal.select_filter.prompt_new": "Nov categorie: {name}",
"filter_modal.select_filter.search": "Serchar o crear",
"filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov",
"filter_modal.select_filter.title": "Filtrar ti-ci posta",
"filter_modal.title.status": "Filtrar un posta",
"firehose.all": "Omno",
"firehose.local": "Ti-ci servitor",
"firehose.remote": "Altri servitores",
"follow_request.authorize": "Autorisar",
"follow_request.reject": "Rejecter",
"follow_requests.unlocked_explanation": "Benque tu conto ne es cludet, li administratores de {domain} pensat que tu fórsan vell voler tractar seque-petitiones de tis-ci contos manualmen.",
"followed_tags": "Sequet hashtags",
"footer.about": "Information",
"footer.directory": "Profilarium",
"footer.get_app": "Obtener li aplication",
"footer.invite": "Invitar gente",
"footer.source_code": "Vider li fonte-code",
"footer.status": "Statu",
"generic.saved": "Salvat",
"getting_started.heading": "Qualmen comensar",
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "sin {additional}",
"hashtag.column_settings.select.no_options_message": "Null suggestiones trovat",
"hashtag.column_settings.select.placeholder": "Inscrir hashtags…",
"hashtag.column_settings.tag_mode.all": "Omni tis",
"hashtag.column_settings.tag_mode.any": "Quelcunc de tis",
"hashtag.column_settings.tag_mode.none": "Necun de tis",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} postas}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} postas}} hodie",
"hashtag.follow": "Sequer hashtag",
"hashtag.unfollow": "Dessequer hashtag",
"hashtags.and_other": "…e {count, plural, other {# in plu}}",
"home.actions.go_to_explore": "Vider lu populari",
"home.actions.go_to_suggestions": "Trovar gente por sequer",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Monstrar boosts",
"home.column_settings.show_replies": "Monstrar responses",
"home.explore_prompt.body": "Tui hemal témpor-linea have un mixtura del hashtags queles tu selectet sequer, li gente quem tu selectet sequer, e li postas queles ili boosta. Si to sembla tro quiet, tu fórsan vole:",
"home.explore_prompt.title": "To-ci es tui hemal págine in Mastodon.",
"home.hide_announcements": "Celar proclamationes",
"home.pending_critical_update.body": "Ples actualisar tui Mastodon-servitor tam rapid quam es possibil!",
"home.pending_critical_update.link": "Vider actualisationes",
"home.pending_critical_update.title": "Urgent actualisation de securitá disponibil!",
"home.show_announcements": "Monstrar proclamationes",
"interaction_modal.description.favourite": "Con un conto de Mastodon, tu posse favoritisar ti-ci post por informar li autor pri quant mult tu aprecia it e conservar it por plu tard.",
"interaction_modal.description.follow": "Con un conto de Mastodon, tu posse sequer {name} por reciver su postas in tui hemal témpor-linea.",
"interaction_modal.description.reblog": "Con un conto de Mastodon, tu posse boostar ti-ci post por distribuer it a tui propri sequitores.",
"interaction_modal.description.reply": "Con un conto de Mastodon, tu posse responder a ti-ci post.",
"interaction_modal.login.action": "Retorna a hem",
"interaction_modal.login.prompt": "Domene de tui hemal servitor, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "Ne sur Mastodon?",
"interaction_modal.on_another_server": "Sur un servitor diferent",
"interaction_modal.on_this_server": "Sur ti-ci servitor",
"interaction_modal.sign_in": "Tu ne ha ineat a ti-ci servitor. U logia tui conto?",
"interaction_modal.title.favourite": "Favoritisar li post de {name}",
"interaction_modal.title.follow": "Sequer {name}",
"interaction_modal.title.reblog": "Boostar li post de {name}",
"interaction_modal.title.reply": "Responder al posta de {name}",
"intervals.full.days": "{number, plural, one {# die} other {# dies}}",
"intervals.full.hours": "{number, plural, one {# hor} other {# hores}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"keyboard_shortcuts.back": "Retroear",
"keyboard_shortcuts.blocked": "Aperter li lista de bloccat usatores",
"keyboard_shortcuts.boost": "Boostar post",
"keyboard_shortcuts.description": "Descrition",
"keyboard_shortcuts.enter": "Aperter posta",
"keyboard_shortcuts.favourite": "Favoritisar post",
"keyboard_shortcuts.favourites": "Aperter li liste de favorites",
"keyboard_shortcuts.federated": "Aperter li federat témpor-linea",
"keyboard_shortcuts.home": "Aperter li hemal témpor-linea",
"keyboard_shortcuts.local": "Aperter li local témpor-linea",
"keyboard_shortcuts.mention": "Mentionar li autor",
"keyboard_shortcuts.muted": "Aperter li lista de silentiat usatores",
"keyboard_shortcuts.my_profile": "Aperter tui profil",
"keyboard_shortcuts.notifications": "Aperter li columne de notificationes",
"keyboard_shortcuts.open_media": "Aperter medie",
"keyboard_shortcuts.pinned": "Aperter li liste de pinglat postas",
"keyboard_shortcuts.profile": "Aperter profil del autor",
"keyboard_shortcuts.reply": "Responder al posta",
"keyboard_shortcuts.requests": "Aperter liste de seque-petitiones",
"limited_account_hint.title": "Ti-ci profil ha esset celat del moderatores de {domain}.",
"link_preview.author": "De {name}",
"lists.account.add": "Adjunter a liste",
"lists.account.remove": "Remover de liste",
"lists.delete": "Deleter liste",
"lists.edit": "Redacter liste",
"lists.edit.submit": "Changear titul",
"lists.exclusive": "Celar ti-ci postas del hemal témpor-linea",
"lists.new.create": "Adjunter liste",
"lists.new.title_placeholder": "Titul del nov liste",
"lists.replies_policy.followed": "Quelcunc sequet usator",
"lists.replies_policy.list": "Membres del liste",
"lists.replies_policy.none": "Nequi",
"lists.replies_policy.title": "Monstrar responses a:",
"lists.search": "Serchar inter li persones quem tu seque",
"lists.subheading": "Tui listes",
"load_pending": "{count, plural, one {# nov element} other {# nov elementes}}",
"mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Celar notificationes de ti-ci usator?",
"mute_modal.indefinite": "Índefinit",
"navigation_bar.filters": "Silentiat paroles",
"navigation_bar.follow_requests": "Petitiones de sequer",
"navigation_bar.lists": "Listes",
"navigation_bar.mutes": "Silentiat usatores",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinglat postas",
"navigation_bar.preferences": "Preferenties",
"navigation_bar.public_timeline": "Federat témpor-linea",
"navigation_bar.search": "Sercha",
"navigation_bar.security": "Securitá",
"not_signed_in_indicator.not_signed_in": "On deve aperter session por accesser ti-ci ressurse.",
"notification.follow_request": "{name} ha petit sequer te",
"notifications.column_settings.follow_request": "Nov petitiones de sequer:",
"notifications.column_settings.update": "Redactiones:",
"notifications.group": "{count} notificationes",
"onboarding.compose.template": "Salute #Mastodon!",
"onboarding.profile.display_name": "Nómine a monstrar",
"report.mute": "Silentiar",
"report.mute_explanation": "Tu ne va vider su postas. Ilu ancor posse sequer te e vider tui postas e ne va saver que ilu es silentiat.",
"status.mute": "Silentiar @{name}",
"status.mute_conversation": "Silentiar conversation",
"status.pin": "Pinglar sur profil",
"status.pinned": "Pinglat post",
"status.unmute_conversation": "Dessilentiar conversation",
"status.unpin": "Despinglar de profil",
"video.mute": "Silentiar li son",
"video.unmute": "Dessilentiar li son"
}

View File

@ -20,6 +20,7 @@
"account.blocked": "Blokusita",
"account.browse_more_on_origin_server": "Videz pluse che la originala profilo",
"account.cancel_follow_request": "Desendez sequodemando",
"account.copy": "Kopiez ligilo al profilo",
"account.direct": "Private mencionez @{name}",
"account.disable_notifications": "Cesez avizar me kande @{name} postas",
"account.domain_blocked": "Domain hidden",
@ -38,7 +39,8 @@
"account.follows.empty": "Ca uzanto ne sequa irgu til nun.",
"account.follows_you": "Sequas tu",
"account.go_to_profile": "Irez al profilo",
"account.hide_reblogs": "Celez busti de @{name}",
"account.hide_reblogs": "Celez repeti de @{name}",
"account.in_memoriam": "Memorige.",
"account.joined_short": "Juntita",
"account.languages": "Chanjez abonita lingui",
"account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}",
@ -58,7 +60,7 @@
"account.requested": "Vartante aprobo",
"account.requested_follow": "{name} demandis sequar tu",
"account.share": "Partigez profilo di @{name}",
"account.show_reblogs": "Montrez busti de @{name}",
"account.show_reblogs": "Montrez repeti de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Posto} other {{counter} Posti}}",
"account.unblock": "Desblokusar @{name}",
"account.unblock_domain": "Desblokusar {domain}",
@ -86,7 +88,7 @@
"attachments_list.unprocessed": "(neprocedita)",
"audio.hide": "Celez audio",
"autosuggest_hashtag.per_week": "{count} dum singla semano",
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
"boost_modal.combo": "Vu povas pulsar {combo} por omisar co venontafoye",
"bundle_column_error.copy_stacktrace": "Kopierorraporto",
"bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.",
"bundle_column_error.error.title": "Ach!",
@ -180,7 +182,7 @@
"confirmations.mute.explanation": "Co celigos posti de oli e posti quo mencionas oli, ma ol ankore permisas oli vidar vua posti e sequar vu.",
"confirmations.mute.message": "Ka vu certe volas silencigar {name}?",
"confirmations.redraft.confirm": "Efacez e riskisez",
"confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e busti esos perdita, e respondi al posto originala esos orfanigita.",
"confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e repeti esos perdita, e respondi al posto originala esos orfanigita.",
"confirmations.reply.confirm": "Respondez",
"confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?",
"confirmations.unfollow.confirm": "Desequez",
@ -189,6 +191,7 @@
"conversation.mark_as_read": "Markizez quale lektita",
"conversation.open": "Videz konverso",
"conversation.with": "Kun {names}",
"copy_icon_button.copied": "Kopiita",
"copypaste.copied": "Kopiesis",
"copypaste.copy_to_clipboard": "Kopiez",
"directory.federated": "De savita fediverso",
@ -200,7 +203,7 @@
"dismissable_banner.community_timeline": "Co esas maxim recenta publika posti de personi quo havas konto quo hostigesas da {domain}.",
"dismissable_banner.dismiss": "Ignorez",
"dismissable_banner.explore_links": "Ca nova rakonti parolesas da personi che ca e altra servili di necentraligita situo nun.",
"dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu busti e favoriziti esas rangizita plu alte.",
"dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu repeti e favoriziti esas rangizita plu alte.",
"dismissable_banner.explore_tags": "Ca hashtagi bezonas plu famoza inter personi che ca e altra servili di la necentraligita situo nun.",
"dismissable_banner.public_timeline": "Yen la posti maxim recenta da personi che la reto sociala quin personi che {domain} sequas.",
"embed.instructions": "Embed this status on your website by copying the code below.",
@ -220,6 +223,7 @@
"emoji_button.search_results": "Trovuri",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Vizito & Plasi",
"empty_column.account_hides_collections": "Ca uzanto selektis ne publikigar ca informo",
"empty_column.account_suspended": "Konto restriktesis",
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profilo esas nedisponebla",
@ -294,14 +298,18 @@
"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",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} partoprenanto} other {{counter} partoprenanti}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} posto} other {{counter} posti}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} posto} other {{counter} posti}} hodie",
"hashtag.follow": "Sequez hashtago",
"hashtag.unfollow": "Desequez hashtago",
"hashtags.and_other": "…e {count, plural, one {# plusa}other {# plusa}}",
"home.actions.go_to_explore": "Videz quo es populara nun",
"home.actions.go_to_suggestions": "Trovez personi por sequar",
"home.column_settings.basic": "Simpla",
"home.column_settings.show_reblogs": "Montrar repeti",
"home.column_settings.show_replies": "Montrar respondi",
"home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili bustis. Se to semblas tro tacanta, vu darfas volar:",
"home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili repetis. Se to semblas tro tacanta, vu darfas volar:",
"home.explore_prompt.title": "Co es vua hemo en Mastodon.",
"home.hide_announcements": "Celez anunci",
"home.pending_critical_update.body": "Voluntez aktualigar vua Mastodon-servilo tam balde kam es posibla!",
@ -310,7 +318,7 @@
"home.show_announcements": "Montrez anunci",
"interaction_modal.description.favourite": "Kun konto che Mastodon, vu povas favorizar ca posto por savigar la autoro ke vu prizas ol e sparar ol por pose.",
"interaction_modal.description.follow": "Per konto che Mastodon, vu povas sequar {name} por ganar ola posti en vua hemniuzeto.",
"interaction_modal.description.reblog": "Per konto che Mastodon, vu povas bustizar ca posti por partigar kun sua sequanti.",
"interaction_modal.description.reblog": "Per konto che Mastodon, vu povas repetar ca posti por dissemar lo a vua propra sequati.",
"interaction_modal.description.reply": "Per konto che Mastodon, vu povas respondar ca posto.",
"interaction_modal.login.action": "Irar a hemo",
"interaction_modal.login.prompt": "Domeno di vua hemala servilo, ex. mastodon.social",
@ -321,14 +329,14 @@
"interaction_modal.sign_in_hint": "Averto: To es la retsituo ube vu kreis konto. Se vu ne rimemoras, serchez vua bonvenanta e-posto. Vu anke povas enpozar vua kompleta uzantnomo! (ex. @Mastodon@mastodon.social)",
"interaction_modal.title.favourite": "Favorizez ca posto da {name}",
"interaction_modal.title.follow": "Sequez {name}",
"interaction_modal.title.reblog": "Bustizez posto di {name}",
"interaction_modal.title.reblog": "Repetez posto di {name}",
"interaction_modal.title.reply": "Respondez posto di {name}",
"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.boost": "Repetez posto",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Deskripto",
@ -383,6 +391,7 @@
"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",
"moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.",
"mute_modal.duration": "Durado",
@ -448,7 +457,7 @@
"notifications.column_settings.unread_notifications.highlight": "Briligez nelektita avizi",
"notifications.column_settings.update": "Modifikati:",
"notifications.filter.all": "Omna",
"notifications.filter.boosts": "Busti",
"notifications.filter.boosts": "Repeti",
"notifications.filter.favourites": "Favoriziti",
"notifications.filter.follows": "Sequati",
"notifications.filter.mentions": "Mencioni",
@ -471,6 +480,17 @@
"onboarding.follows.empty": "Regretinde, nula rezultajo povas montresar nune. Vu povas esforcar serchar, o irar al explorala pagino por trovar personi sequinda, o esforcar itere pose.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.profile.discoverable": "Trovebligez mea profilo",
"onboarding.profile.discoverable_hint": "Se vu selektas deskovrebleso che Mastodon, vua posti povas aparar en sercho-rezultaji e populari, e vua profilo forsan sugestesos a personi kun interesi simila a vua.",
"onboarding.profile.display_name": "Publika nomo",
"onboarding.profile.display_name_hint": "Vua tota nomo o vua gaya nomo…",
"onboarding.profile.lead": "Vu sempre povas kompletigar co plu tarde en la opcioni, ube mem plua personalizanta opcioni es disponebla.",
"onboarding.profile.note": "Biografio",
"onboarding.profile.note_hint": "Vu povas @mencionar altra personi o #hashtagi…",
"onboarding.profile.save_and_continue": "Preservez e avancez",
"onboarding.profile.title": "Kompletigez la profilo",
"onboarding.profile.upload_avatar": "Kargez profiloportreto",
"onboarding.profile.upload_header": "Kargez profilokapimajo",
"onboarding.share.lead": "Savigez personi quale ili povas trovar vu che Mastodon!",
"onboarding.share.message": "Me esas {username} che #Mastodon! Venez e sequez me ye {url}",
"onboarding.share.next_steps": "Kozi quin vu darfas volar facar sequante:",
@ -482,7 +502,7 @@
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.title": "Facar vua unesma posto",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.body": "Vu interagos plue kun profilo detalizita.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
@ -510,6 +530,7 @@
"privacy.unlisted.short": "Ne enlistigota",
"privacy_policy.last_updated": "Antea novajo ye {date}",
"privacy_policy.title": "Privatesguidilo",
"recommended": "Rekomendata",
"refresh": "Rifreshez",
"regeneration_indicator.label": "Chargas…",
"regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!",
@ -580,6 +601,8 @@
"search.quick_action.status_search": "Posti qui asortas {x}",
"search.search_or_paste": "Serchar o pozar URL",
"search_popout.full_text_search_disabled_message": "Nedisponebla che {domain}.",
"search_popout.full_text_search_logged_out_message": "Nur disponebla enirite.",
"search_popout.language_code": "ISO linguokodexo",
"search_popout.options": "Opcioni serchala",
"search_popout.quick_actions": "Agi rapida",
"search_popout.recent": "Lasta serchi",
@ -607,8 +630,8 @@
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Restriktez @{name}",
"status.bookmark": "Libromarko",
"status.cancel_reblog_private": "Debustez",
"status.cannot_reblog": "Ca posto ne povas bustesas",
"status.cancel_reblog_private": "Desrepetez",
"status.cannot_reblog": "Ca posto ne povas repetesar",
"status.copy": "Copy link to status",
"status.delete": "Efacar",
"status.detailed_status": "Detala konversvido",
@ -636,10 +659,10 @@
"status.pin": "Pinglagez che profilo",
"status.pinned": "Pinned toot",
"status.read_more": "Lektez pluse",
"status.reblog": "Repetar",
"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.reblog": "Repetez",
"status.reblog_private": "Repetez kun originala videbleso",
"status.reblogged_by": "{name} repetis",
"status.reblogs.empty": "Nulu ja repetis ca posto. Kande ulu facas lo, lu montresos hike.",
"status.redraft": "Efacez e riskisigez",
"status.remove_bookmark": "Efacez libromarko",
"status.replied_to": "Respondis a {name}",

View File

@ -0,0 +1,139 @@
{
"about.blocks": "Sirvidores moderados",
"about.contact": "Kontakto:",
"about.disclaimer": "Mastodon es un programario libero, kon kodiche avierto i una marka komersiala de Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Razon no desponivle",
"about.domain_blocks.preamble": "Mastodon djeneralmente te permete ver kontenido de i enteraktuar kon utilizadores de kualseker otro sirvidor en el fediverso. Estas son las eksepsiones en este sirvidor en partikolar.",
"about.domain_blocks.silenced.explanation": "\"Djeneralmente no veras profiles i kontenido de este sirvidor, salvo ke eksplisitamente lo bushkes o sigas algun kuento de el.",
"about.domain_blocks.silenced.title": "Limitado",
"about.domain_blocks.suspended.explanation": "Dingunos datos de este sirvidor sera prosesado, magazinado o enterkambiado kon este sirvidor. Enteraksyon o komunikasyon kon sus utilizadores sera imposivle.",
"about.domain_blocks.suspended.title": "Suspendido",
"about.not_available": "Esta enformasyon no esta desponivle en este sirvidor.",
"about.powered_by": "Redes sosyalas desentralizadas kon uzo de {mastodon}",
"about.rules": "Reglas del sirvidor",
"account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Adjusta a o kita de listas",
"account.badges.bot": "Bot",
"account.badges.group": "Grupo",
"account.block": "Bloka @{name}",
"account.block_domain": "Bloka el domeno {domain}",
"account.block_short": "Bloka",
"account.blocked": "Blokado",
"account.browse_more_on_origin_server": "Ve mas en el profil orijinal",
"account.cancel_follow_request": "Anula solisitud de segir",
"account.copy": "Kopia atadijo de profil",
"account.direct": "Enmenta a @{name} en privado",
"account.disable_notifications": "No me avizes mas sovre publikasyones de @{name}",
"account.domain_blocked": "Domeno blokado",
"account.edit_profile": "Edita profil",
"account.enable_notifications": "Avizame kuando @{name} publike",
"account.endorse": "Avalia en profil",
"account.featured_tags.last_status_at": "Ultima publikasyon de {date}",
"account.featured_tags.last_status_never": "\"No ay publikasyones",
"account.featured_tags.title": "Etiketas avaliadas de {name}",
"account.follow": "Sige",
"account.followers": "Suivantes",
"account.followers.empty": "Por agora dingun no sige a este utilizador.",
"account.followers_counter": "{count, plural, one {{counter} suivante} other {{counter} suivantes}}",
"account.following": "Sigiendo",
"account.following_counter": "{count, plural, other {Sigiendo a {counter}}}",
"account.follows.empty": "Este utilizador ainda no sige a ningun.",
"account.follows_you": "Te sige",
"account.go_to_profile": "Va al profil",
"account.hide_reblogs": "Eskonde repartajasyones de @{name}",
"account.joined_short": "Adjunto",
"account.languages": "Troka linguas suskrividas",
"account.link_verified_on": "La propriedad de este atadijo fue verifikada el {date}",
"account.locked_info": "El estado de privasita de este konto esta konfigurado komo serado. El proprietario reviza manualmente kien le puede segir.",
"account.media": "Multimedia",
"account.mention": "Enmenta a @{name}",
"account.moved_to": "{name} tiene endikado ke su muevo kuento agora es:",
"account.mute": "Silensia a @{name}",
"account.mute_notifications_short": "Silensia avizos de @{name}",
"account.mute_short": "Silensia",
"account.muted": "Silensiado",
"account.open_original_page": "Avre pajina orijnala",
"account.posts": "Publikasyones",
"account.posts_with_replies": "Kon repuestas",
"account.report": "Raporta @{name}",
"account.requested": "Asperando achetasion. Klika para anular la solisitud de segimiento",
"account.requested_follow": "{name} tiene solisitado segirte",
"account.share": "Partaja el profil de @{name}",
"account.show_reblogs": "Amostra repartajasyones de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
"account.unblock": "Dezbloka @{name}",
"account.unblock_domain": "Dezbloka domeno {domain}",
"account.unblock_short": "Dezbloka",
"account.unendorse": "No avalia en profil",
"account.unfollow": "Desige",
"account.unmute": "Desilensia a @{name}",
"account.unmute_notifications_short": "Desilensia avizos",
"account.unmute_short": "Desilensia",
"account_note.placeholder": "Klika para adjustar nota",
"admin.dashboard.daily_retention": "Proporsyon de retensyon de utilizadores por diya dempues de enrejistrasyon",
"admin.dashboard.monthly_retention": "Proporsyon de retensyon de utilizadores por mez dempues de enrejistrasyon",
"admin.dashboard.retention.average": "Media",
"admin.dashboard.retention.cohort": "Mez de enrejistrasyon",
"admin.dashboard.retention.cohort_size": "Muevos utilizadores",
"alert.rate_limited.message": "Por favor aprova dempues de {retry_time, time, medium}.",
"alert.rate_limited.title": "Trafiko limitado",
"alert.unexpected.message": "Afito un yerro no asperado.",
"alert.unexpected.title": "Atyo!",
"announcement.announcement": "Pregon",
"attachments_list.unprocessed": "(no prosesado)",
"audio.hide": "Eskonder audio",
"autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
"bundle_column_error.error.title": "Atyo, no!",
"bundle_column_error.network.body": "Uvo un yerro kon la prova de eskargar esta pajina. Esto puede ser por un problem temporal kon tu koneksyon a la internet o a este sirvidor.",
"bundle_column_error.network.title": "Yerro de red",
"bundle_column_error.retry": "Aprova de muevo",
"bundle_column_error.return": "Volta a la linya prinsipala",
"bundle_column_error.routing.body": "No se pudo trokar la pajina solisitada. Estas siguro ke el adreso URL en la vara de adreso es djusto?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Serra",
"bundle_modal_error.message": "Algo negro afito al eskargar este komponente.",
"bundle_modal_error.retry": "Aprova de muevo",
"closed_registrations.other_server_instructions": "Deke Mastodon es desentralizado, puedes kriyar un kuento en otro sirvidor i ainda enteraktuar kon este.",
"closed_registrations_modal.description": "Aktualmente no es posivle kriyar un kuento en {domain}, ama por favor akodrate de ke no ay menester de tener un kuento espesifikamente en {domain} para kulanear Mastodon.",
"closed_registrations_modal.find_another_server": "Bushka otro sirvidor",
"closed_registrations_modal.preamble": "Mastodon es desentralizado, estonses sin emportansya ande kriyas tu kuento, podras segir i enteraktuar kon kualseker persona en este sirvidor. Tamyen puedes balabayarlo tu mezmo!",
"closed_registrations_modal.title": "Enrerjistrate en Mastodon",
"column.about": "Sovre mozotros",
"column.blocks": "Utilizadores blokados",
"column.bookmarks": "Markadores",
"column.community": "Linya de tiempo lokala",
"column.direct": "Enmentaduras privadas",
"column.directory": "Eksplora profiles",
"column.domain_blocks": "Domenos blokados",
"column.favourites": "Te plazen",
"column.firehose": "Linyas en bivo",
"column.follow_requests": "Solisitudes de segimiento",
"column.home": "Linya prinsipala",
"column.lists": "Listas",
"column.mutes": "Utilizadores silensiados",
"column.notifications": "Avizos",
"column.pins": "Publikasyones fiksadas",
"column.public": "Linya de tiempo federada",
"column_back_button.label": "Atras",
"column_header.hide_settings": "Eskonde opsyones",
"column_header.moveLeft_settings": "Move kolumna a la siedra",
"column_header.moveRight_settings": "Move kolumna a la derecha",
"column_header.pin": "Fiksa",
"column_header.show_settings": "Amostra opsyones",
"column_header.unpin": "Defiksar",
"column_subheading.settings": "Opsyones",
"community.column_settings.local_only": "Solo lokalas",
"community.column_settings.media_only": "Solo multimedia",
"community.column_settings.remote_only": "Solo remotas",
"compose.language.change": "Troka lingua",
"compose.language.search": "Bushka linguas...",
"compose_form.direct_message_warning_learn_more": "Ambezate mas",
"compose_form.encryption_warning": "Publikasyones en Mastodon no son shifradas de lado a lado. No partajes dinguna enformasyon sensivle por Mastodon.",
"compose_form.hashtag_warning": "Esta publikasyon no sera amostrada debasho de dinguna etiketa si no es publika. Solo publikasyones publikas se pueden bushkar por la etiketa.",
"compose_form.lock_disclaimer": "Tu kuento no esta {locked}. Todos pueden segirte para ver tus publikasyones solo para suivantes.",
"compose_form.lock_disclaimer.lock": "serrado",
"compose_form.placeholder": "Ke haber?"
}

View File

@ -1,25 +1,39 @@
{
"about.contact": "ਸੰਪਰਕ:",
"about.domain_blocks.silenced.title": "ਸੀਮਿਤ",
"about.domain_blocks.suspended.title": "ਮੁਅੱਤਲ ਕੀਤੀ",
"about.rules": "ਸਰਵਰ ਨਿਯਮ",
"account.account_note_header": "ਨੋਟ",
"account.badges.bot": "Bot",
"account.add_or_remove_from_list": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ ਜਾਂ ਹਟਾਓ",
"account.badges.bot": "ਆਟੋਮੇਟ ਕੀਤਾ",
"account.badges.group": "ਗਰੁੱਪ",
"account.block": "@{name} ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
"account.block_domain": "{domain} ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
"account.block_short": "ਪਾਬੰਦੀ",
"account.blocked": "ਪਾਬੰਦੀਸ਼ੁਦਾ",
"account.cancel_follow_request": "Withdraw follow request",
"account.follow": "ਪ੍ਰਸ਼ੰਸਕ ਬਣੋ",
"account.followers": "ਪ੍ਰਸ਼ੰਸਕ",
"account.following": "ਪ੍ਰਸ਼ੰਸਕ ਹਾਂ",
"account.cancel_follow_request": "ਫ਼ਾਲੋ ਕਰਨ ਨੂੰ ਰੱਦ ਕਰੋ",
"account.edit_profile": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ",
"account.follow": "ਫ਼ਾਲੋ",
"account.followers": "ਫ਼ਾਲੋਅਰ",
"account.followers.empty": "ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਹਾਲੇ ਕੋਈ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
"account.following": "ਫ਼ਾਲੋ ਕੀਤਾ",
"account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
"account.follows_you": "ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
"account.media": "ਮੀਡੀਆ",
"account.muted": "ਮੌਨ ਕੀਤੀਆਂ",
"account.posts": "Toots",
"account.posts_with_replies": "Toots and replies",
"account.requested": "Awaiting approval",
"account.posts": "ਪੋਸਟਾਂ",
"account.posts_with_replies": "ਪੋਸਤਾਂ ਅਤੇ ਜਵਾਬ",
"account.requested": "ਮਨਜ਼ੂਰੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ। ਫ਼ਾਲੋ ਬੇਨਤੀਆਂ ਨੂੰ ਰੱਦ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ",
"account.requested_follow": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "@{name} ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ",
"account.unblock_domain": "{domain} ਡੋਮੇਨ ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ",
"account.unblock_short": "ਪਾਬੰਦੀ ਹਟਾਓ",
"account.unfollow": "ਪ੍ਰਸ਼ੰਸਕੀ ਰੱਦ ਕਰੋ",
"account.unfollow": "ਅਣ-ਫ਼ਾਲੋ",
"account.unmute_short": "ਮੌਨ-ਰਹਿਤ ਕਰੋ",
"account_note.placeholder": "Click to add a note",
"admin.dashboard.retention.average": "ਔਸਤ",
"admin.dashboard.retention.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ",
"alert.unexpected.title": "ਓਹੋ!",
"announcement.announcement": "ਹੋਕਾ",
"bundle_column_error.network.title": "ਨੈੱਟਵਰਕ ਦੀ ਸਮੱਸਿਆ",
@ -27,35 +41,50 @@
"bundle_modal_error.close": "ਬੰਦ ਕਰੋ",
"bundle_modal_error.retry": "ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ",
"column.about": "ਸਾਡੇ ਬਾਰੇ",
"column.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ",
"column.bookmarks": "ਬੁੱਕਮਾਰਕ",
"column.home": "ਮੁੱਖ ਪੰਨਾ",
"column.community": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ",
"column.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ",
"column.favourites": "ਮਨਪਸੰਦ",
"column.follow_requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ",
"column.home": "ਮੁੱਖ ਸਫ਼ਾ",
"column.lists": "ਸੂਚੀਆਂ",
"column.notifications": "ਸੂਚਨਾਵਾਂ",
"column.pins": "Pinned toot",
"column.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ",
"column_back_button.label": "ਪਿੱਛੇ",
"column_header.pin": "ਟੰਗੋ",
"column_header.show_settings": "ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ",
"column_header.unpin": "ਲਾਹੋ",
"column_subheading.settings": "ਸੈਟਿੰਗਾਂ",
"community.column_settings.media_only": "Media only",
"community.column_settings.local_only": "ਸਿਰਫ ਲੋਕਲ ਹੀ",
"community.column_settings.media_only": "ਸਿਰਫ ਮੀਡੀਆ ਹੀ",
"community.column_settings.remote_only": "ਸਿਰਫ਼ ਰਿਮੋਟ ਹੀ",
"compose.language.change": "ਭਾਸ਼ਾ ਬਦਲੋ",
"compose.language.search": "ਭਾਸ਼ਾਵਾਂ ਦੀ ਖੋਜ...",
"compose.published.open": "ਖੋਲ੍ਹੋ",
"compose.saved.body": "ਪੋਸਟ ਸੰਭਾਲੀ ਗਈ।",
"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.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "ਲਾਕ ਹੈ",
"compose_form.placeholder": "What is on your mind?",
"compose_form.publish": "ਪ੍ਰਕਾਸ਼ਨ ਕਰੋ",
"compose_form.publish_form": "Publish",
"compose_form.save_changes": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler.marked": "ਸਮੱਗਰੀ ਚੇਤਾਵਨੀ ਨੂੰ ਹਟਾਓ",
"compose_form.spoiler.unmarked": "ਸਮੱਗਰੀ ਬਾਰੇ ਚੇਤਾਵਨੀ ਜੋੜੋ",
"confirmation_modal.cancel": "ਰੱਦ ਕਰੋ",
"confirmations.block.confirm": "ਬਲਾਕ",
"confirmations.delete.confirm": "ਮਿਟਾਓ",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete_list.confirm": "ਮਿਟਾਓ",
"confirmations.block.confirm": "ਪਾਬੰਦੀ",
"confirmations.delete.confirm": "ਟਾਓ",
"confirmations.delete.message": "ਕੀ ਤੁਸੀਂ ਇਹ ਪੋਸਟ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?",
"confirmations.delete_list.confirm": "ਟਾਓ",
"confirmations.discard_edit_media.confirm": "ਰੱਦ ਕਰੋ",
"confirmations.domain_block.confirm": "Hide entire domain",
"confirmations.domain_block.confirm": "ਪੂਰੀ ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
"confirmations.edit.confirm": "ਸੋਧ",
"confirmations.logout.confirm": "ਬਾਹਰ ਹੋਵੋ",
"confirmations.mute.confirm": "ਮੌਨ ਕਰੋ",
"confirmations.reply.confirm": "ਜਵਾਬ ਦੇਵੋ",
"confirmations.unfollow.confirm": "ਪ੍ਰਸ਼ੰਸਕੀ ਰੱਦ ਕਰੋ",
"confirmations.unfollow.confirm": "ਅਣ-ਫ਼ਾਲੋ",
"copypaste.copied": "ਕਾਪੀ ਕੀਤਾ",
"copypaste.copy_to_clipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ",
"disabled_account_banner.account_settings": "ਖਾਤੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ",
@ -63,165 +92,252 @@
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"embed.instructions": "Embed this status on your website by copying the code below.",
"emoji_button.activity": "ਗਤੀਵਿਧੀਆਂ",
"emoji_button.clear": "ਸਾਫ਼ ਕਰੋ",
"emoji_button.activity": "ਗਤੀਵਿਧੀ",
"emoji_button.clear": "ਮਿਟਾਓ",
"emoji_button.custom": "ਕਸਟਮ",
"emoji_button.flags": "ਝੰਡੀਆਂ",
"emoji_button.food": "ਖਾਣਾ-ਪੀਣਾ",
"emoji_button.nature": "ਕੁਦਰਤ",
"emoji_button.objects": "ਇਕਾਈ",
"emoji_button.people": "ਲੋਕ",
"empty_column.account_timeline": "No toots here!",
"emoji_button.search": "ਖੋਜ ਕਰੋ...",
"emoji_button.search_results": "ਖੋਜ ਨਤੀਜੇ",
"emoji_button.symbols": "ਚਿੰਨ੍ਹ",
"emoji_button.travel": "ਸੈਰ ਸਪਾਟਾ ਤੇ ਥਾਵਾਂ",
"empty_column.account_timeline": "ਇੱਥੇ ਕੋਈ ਪੋਸਟ ਨਹੀਂ ਹੈ!",
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.home": "ਤੁਹਾਡੀ ਟਾਈਮ-ਲਾਈਨ ਖਾਲੀ ਹੈ! ਇਸ ਨੂੰ ਭਰਨ ਲਈ ਹੋਰ ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ।",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"errors.unexpected_crash.report_issue": "ਮੁੱਦੇ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
"explore.suggested_follows": "ਲੋਕ",
"explore.title": "ਪੜਚੋਲ ਕਰੋ",
"explore.trending_links": "ਖ਼ਬਰਾਂ",
"explore.trending_statuses": "ਸੰਪਾਦਨਾਵਾਂ",
"follow_request.reject": "ਅਸਵੀਕਾਰ ਕਰੋ",
"explore.trending_statuses": "ਪੋਸਟਾਂ",
"explore.trending_tags": "ਹੈਸ਼ਟੈਗ",
"filter_modal.added.settings_link": "ਸੈਟਿੰਗਾਂ ਸਫ਼ਾ",
"firehose.all": "ਸਭ",
"firehose.local": "ਇਹ ਸਰਵਰ",
"firehose.remote": "ਹੋਰ ਸਰਵਰ",
"follow_request.reject": "ਰੱਦ ਕਰੋ",
"footer.about": "ਸਾਡੇ ਬਾਰੇ",
"footer.get_app": "ਐਪ ਲਵੋ",
"footer.invite": "ਲੋਕਾਂ ਨੂੰ ਸੱਦਾ ਭੇਜੋ",
"footer.keyboard_shortcuts": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ",
"footer.privacy_policy": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ",
"footer.source_code": "ਸਰੋਤ ਕੋਡ ਵੇਖੋ",
"footer.status": "ਹਾਲਤ",
"generic.saved": "ਸਾਂਭੀ ਗਈ",
"getting_started.heading": "ਸ਼ੁਰੂ ਕਰੀਏ",
"hashtag.column_header.tag_mode.all": "ਅਤੇ {additional}",
"hashtag.column_header.tag_mode.any": "ਜਾਂ {additional}",
"hashtag.column_header.tag_mode.none": "{additional} ਬਿਨਾਂ",
"hashtag.column_settings.tag_mode.any": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ",
"hashtag.column_settings.tag_mode.none": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਹੀਂ",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"hashtag.follow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
"hashtag.unfollow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰੋ",
"home.column_settings.basic": "ਆਮ",
"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",
"interaction_modal.title.follow": "{name} ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
"keyboard_shortcuts.back": "ਪਿੱਛੇ ਜਾਓ",
"keyboard_shortcuts.blocked": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਸੂਚੀ ਖੋਲ੍ਹੋ",
"keyboard_shortcuts.boost": "ਪੋਸਟ ਨੂੰ ਬੂਸਟ ਕਰੋ",
"keyboard_shortcuts.column": "ਫੋਕਸ ਕਾਲਮ",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "ਵਰਣਨ",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.heading": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ",
"keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
"keyboard_shortcuts.notifications": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਕਾਲਮ ਖੋਲ੍ਹੋ",
"keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.profile": "ਲੇਖਕ ਦਾ ਪਰੋਫਾਈਲ ਖੋਲ੍ਹੋ",
"keyboard_shortcuts.reply": "ਪੋਸਟ ਨੂੰ ਜਵਾਬ ਦਿਓ",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.toggle_sensitivity": "ਮੀਡੀਆ ਦਿਖਾਉਣ/ਲੁਕਾਉਣ ਲਈ",
"keyboard_shortcuts.toot": "ਨਵੀਂ ਪੋਸਟ ਸ਼ੁਰੂ ਕਰੋ",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "ਬੰਦ ਕਰੋ",
"lightbox.next": "ਅਗਲੀ",
"lightbox.previous": "ਪਿਛਲੀ",
"lists.delete": "ਸੂਚੀ ਮਿਟਾਓ",
"link_preview.author": "{name} ਵਲੋਂ",
"lists.account.add": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ",
"lists.account.remove": "ਸੂਚੀ ਵਿਚੋਂ ਹਟਾਓ",
"lists.delete": "ਸੂਚੀ ਹਟਾਓ",
"lists.replies_policy.followed": "ਕੋਈ ਵੀ ਫ਼ਾਲੋ ਕੀਤਾ ਵਰਤੋਂਕਾਰ",
"lists.replies_policy.none": "ਕੋਈ ਨਹੀਂ",
"loading_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ…",
"mute_modal.duration": "ਮਿਆਦ",
"navigation_bar.about": "ਸਾਡੇ ਬਾਰੇ",
"navigation_bar.about": "ਇਸ ਬਾਰੇ",
"navigation_bar.advanced_interface": "ਤਕਨੀਕੀ ਵੈੱਬ ਇੰਟਰਫੇਸ ਵਿੱਚ ਖੋਲ੍ਹੋ",
"navigation_bar.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ",
"navigation_bar.bookmarks": "ਬੁੱਕਮਾਰਕ",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.community_timeline": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ",
"navigation_bar.compose": "ਨਵੀਂ ਪੋਸਟ ਲਿਖੋ",
"navigation_bar.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ",
"navigation_bar.discover": "ਖੋਜ",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.domain_blocks": "ਪਾਬੰਦੀ ਲਾਏ ਡੋਮੇਨ",
"navigation_bar.edit_profile": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ",
"navigation_bar.explore": "ਪੜਚੋਲ ਕਰੋ",
"navigation_bar.favourites": "ਮਨਪਸੰਦ",
"navigation_bar.follow_requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ",
"navigation_bar.followed_tags": "ਫ਼ਾਲੋ ਕੀਤੇ ਹੈਸ਼ਟੈਗ",
"navigation_bar.follows_and_followers": "ਫ਼ਾਲੋ ਅਤੇ ਫ਼ਾਲੋ ਕਰਨ ਵਾਲੇ",
"navigation_bar.lists": "ਸੂਚੀਆਂ",
"navigation_bar.logout": "ਲਾੱਗ ਆਊਟ, ਬਾਹਰ ਆਉਣਾ",
"navigation_bar.logout": "ਲਾਗ ਆਉਟ",
"navigation_bar.personal": "ਨਿੱਜੀ",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "ਤਰਜੀਹਾਂ",
"navigation_bar.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ",
"navigation_bar.preferences": "ਪਸੰਦਾਂ",
"navigation_bar.search": "ਖੋਜੋ",
"navigation_bar.security": "ਸੁਰੱਖਿਆ",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"not_signed_in_indicator.not_signed_in": "ਇਹ ਸਰੋਤ ਵਰਤਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।",
"notification.follow": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕੀਤਾ",
"notification.follow_request": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ",
"notification.reblog": "{name} boosted your status",
"notifications.column_settings.status": "New toots:",
"notifications.column_settings.follow": "ਨਵੇਂ ਫ਼ਾਲੋਅਰ:",
"notifications.column_settings.follow_request": "ਨਵੀਆਂ ਫ਼ਾਲੋ ਬੇਨਤੀਆਂ:",
"notifications.column_settings.status": "ਨਵੀਆਂ ਪੋਸਟਾਂ:",
"notifications.column_settings.update": "ਸੋਧ:",
"notifications.filter.all": "ਸਭ",
"notifications.filter.follows": "ਪ੍ਰਸ਼ੰਸਕ ਬਣਨ 'ਤੇ",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
"notifications.filter.boosts": "ਬੂਸਟ",
"notifications.filter.favourites": "ਮਨਪਸੰਦ",
"notifications.filter.follows": "ਫ਼ਾਲੋ",
"notifications.filter.mentions": "ਜ਼ਿਕਰ",
"onboarding.actions.go_to_explore": "ਮੈਨੂੰ ਰੁਝਾਨ ਵੇਖਾਓ",
"onboarding.actions.go_to_home": "ਮੇਰੀ ਮੁੱਖ ਫੀਡ ਉੱਤੇ ਲੈ ਜਾਓ",
"onboarding.follows.lead": "",
"onboarding.follows.title": "ਆਪਣੀ ਹੋਮ ਫੀਡ ਨੂੰ ਨਿੱਜੀ ਬਣਾਓ",
"onboarding.profile.note": "ਜਾਣਕਾਰੀ",
"onboarding.profile.save_and_continue": "ਸੰਭਾਲੋ ਅਤੇ ਜਾਰੀ ਰੱਖੋ",
"onboarding.profile.title": "ਪਰੋਫਾਈਲ ਸੈਟਅੱਪ",
"onboarding.profile.upload_avatar": "ਪਰੋਫਾਈਲ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰੋ",
"onboarding.share.title": "ਆਪਣਾ ਪਰੋਫਾਈਲ ਸਾਂਝਾ ਕਰੋ",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip": "Want to skip right ahead?",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.start.skip": "ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਮਦਦ ਨਹੀਂ ਚਾਹੀਦੀ ਹੈ?",
"onboarding.start.title": "ਤੁਸੀਂ ਪੂਰਾ ਕਰਨ ਲਿਆ!",
"onboarding.steps.follow_people.body": "ਦਿਲਚਸਪ ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ, ਇਹ ਤਾਂ ਮਸਟਾਡੋਨ ਹੈ।",
"onboarding.steps.follow_people.title": "ਆਪਣੀ ਹੋਮ ਫੀਡ ਨੂੰ ਨਿੱਜੀ ਬਣਾਓ",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.title": "ਆਪਣੀ ਪਹਿਲੀ ਪੋਸਟ ਕਰੋ",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"poll.closed": "ਬੰਦ ਹੋਇਆ",
"onboarding.steps.setup_profile.title": "ਆਪਣੇ ਪਰੋਫਾਈਲ ਨੂੰ ਆਪਣਾ ਬਣਾਓ",
"onboarding.steps.share_profile.body": "ਆਪਣੇ ਮਿੱਤਰਾਂ ਨੂੰ ਦੱਸੋ ਤੁਹਾਨੂੰ ਮਸਟਾਡੋਨ ਕਿਵੇਂ ਲੱਗਿਆ",
"onboarding.steps.share_profile.title": "ਆਪਣੇ ਮਸਟਾਡੋਨ ਪਰੋਫਾਈਲ ਨੂੰ ਸਾਂਝਾ ਕਰੋ",
"poll.closed": "ਬੰਦ ਹ",
"poll.refresh": "ਤਾਜ਼ਾ ਕਰੋ",
"poll.vote": "ਵੋਟ ਪਾਓ",
"privacy.change": "Adjust status privacy",
"privacy.direct.short": "Direct",
"privacy.private.short": "Followers-only",
"privacy.change": "ਪੋਸਟ ਦੀ ਪਰਦੇਦਾਰੀ ਨੂੰ ਬਦਲੋ",
"privacy.direct.short": "ਸਿੱਧਾ ਲੋਕਾਂ ਦਾ ਜ਼ਿਕਰ ਕਰੋ",
"privacy.private.short": "ਸਿਰਫ਼ ਫ਼ਾਲੋਅਰ",
"privacy.public.short": "ਜਨਤਕ",
"privacy_policy.title": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ",
"refresh": "ਤਾਜ਼ਾ ਕਰੋ",
"regeneration_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...",
"relative_time.full.just_now": "ਹੁਣੇ ਹੀ",
"relative_time.just_now": "ਹੁਣੇ",
"relative_time.minutes": "{number}ਮਿੰ",
"relative_time.seconds": "{number}ਸ",
"relative_time.today": "ਅੱਜ",
"reply_indicator.cancel": "ਰੱਦ ਕਰੋ",
"report.block": "ਬਲਾਕ",
"report.categories.legal": "ਕਨੂੰਨੀ",
"report.categories.other": "ਬਾਕੀ",
"report.categories.spam": "ਸਪਾਮ",
"report.category.title_status": "ਸੰਪਾਦਨਾ",
"report.categories.spam": "ਸਪੈਮ",
"report.category.title_account": "ਪਰੋਫਾਈਲ",
"report.category.title_status": "ਪੋਸਟ",
"report.close": "ਮੁਕੰਮਲ",
"report.mute": "ਮੌਨ ਕਰੋ",
"report.next": "ਅਗਲੀ",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
"report.placeholder": "ਵਧੀਕ ਟਿੱਪਣੀਆਂ",
"report.reasons.dislike": "ਮੈਨੂੰ ਇਹ ਪਸੰਦ ਨਹੀਂ ਹੈ",
"report.reasons.spam": "ਇਹ ਸਪੈਮ ਹੈ",
"report.submit": "ਭੇਜੋ",
"report.target": "{target} ਰਿਪੋਰਟ",
"report.unfollow": "@{name} ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰੋ",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
"report_notification.categories.other": "ਬਾਕੀ",
"report_notification.categories.spam": "ਸਪਾਮ",
"report_notification.categories.spam": "ਸਪੈਮ",
"report_notification.categories.violation": "ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ",
"search.placeholder": "ਖੋਜੋ",
"search_popout.quick_actions": "ਫੌਰੀ ਕਾਰਵਾਈਆਂ",
"search_popout.specific_date": "ਖਾਸ ਤਾਰੀਖ",
"search_popout.user": "ਵਰਤੋਂਕਾਰ",
"search_results.accounts": "ਪਰੋਫਾਈਲ",
"search_results.all": "ਸਭ",
"search_results.statuses": "Toots",
"search_results.hashtags": "ਹੈਸ਼ਟੈਗ",
"search_results.statuses": "ਪੋਸਟਾਂ",
"server_banner.learn_more": "ਹੋਰ ਜਾਣੋ",
"sign_in_banner.create_account": "ਖਾਤਾ ਬਣਾਓ",
"sign_in_banner.sign_in": "Sign in",
"status.admin_status": "Open this status in the moderation interface",
"status.copy": "Copy link to status",
"status.delete": "ਮਿਟਾਓ",
"sign_in_banner.sign_in": "ਲਾਗਇਨ",
"status.admin_status": "",
"status.block": "@{name} ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
"status.bookmark": "ਬੁੱਕਮਾਰਕ",
"status.copy": "ਪੋਸਟ ਲਈ ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
"status.delete": "ਹਟਾਓ",
"status.edit": "ਸੋਧ",
"status.edited": "{date} ਨੂੰ ਸੋਧਿਆ",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "ਮੜ੍ਹੋ",
"status.favourite": "ਪਸੰਦ",
"status.history.created": "{name} ਨੇ {date} ਨੂੰ ਬਣਾਇਆ",
"status.history.edited": "{name} ਨੇ {date} ਨੂੰ ਸੋਧਿਆ",
"status.load_more": "ਹੋਰ ਦਿਖਾਓ",
"status.media.open": "ਖੋਲ੍ਹਣ ਲਈ ਕਲਿੱਕ ਕਰੋ",
"status.media.show": "ਵੇਖਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ",
"status.mention": "@{name} ਦਾ ਜ਼ਿਕਰ",
"status.more": "ਹੋਰ",
"status.open": "Expand this status",
"status.pinned": "Pinned toot",
"status.open": "ਇਹ ਪੋਸਟ ਨੂੰ ਫੈਲਾਓ",
"status.pin": "ਪਰੋਫਾਈਲ ਉੱਤੇ ਟੰਗੋ",
"status.pinned": "ਟੰਗੀ ਹੋਈ ਪੋਸਟ",
"status.read_more": "ਹੋਰ ਪੜ੍ਹੋ",
"status.reblog": "ਵਧਾਓ",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.replied_to": "{name} ਨੂੰ ਜਵਾਬ ਦਿੱਤਾ",
"status.reply": "ਜਵਾਬ ਦੇਵੋ",
"status.replyAll": "ਮਾਮਲੇ ਨੂੰ ਜਵਾਬ ਦਿਓ",
"status.report": "@{name} ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
"status.sensitive_warning": "ਸੰਵੇਦਨਸ਼ੀਲ ਸਮੱਗਰੀ",
"status.share": "ਸਾਂਝਾ ਕਰੋ",
"status.show_filter_reason": "ਕਿਵੇਂ ਵੀ ਵੇਖਾਓ",
"status.show_less": "ਘੱਟ ਦਿਖਾਓ",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ",
"tabs_bar.home": "ਮੁੱਖ ਪੰਨਾ",
"status.show_more": "ਹੋਰ ਦਿਖਾਓ",
"status.title.with_attachments": "{user} ਨੇ {attachmentCount, plural,one {ਅਟੈਚਮੈਂਟ} other {{attachmentCount}ਅਟੈਚਮੈਂਟਾਂ}} ਪੋਸਟ ਕੀਤੀਆਂ",
"status.translate": "ਉਲੱਥਾ ਕਰੋ",
"subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ",
"tabs_bar.home": "ਘਰ",
"tabs_bar.notifications": "ਸੂਚਨਾਵਾਂ",
"timeline_hint.resources.followers": "ਪ੍ਰਸ਼ੰਸਕ",
"timeline_hint.resources.follows": "ਪ੍ਰਸ਼ੰਸਕ ਬਣਨ 'ਤੇ",
"timeline_hint.resources.statuses": "Older toots",
"timeline_hint.resources.followers": "ਫ਼ਾਲੋਅਰ",
"timeline_hint.resources.follows": "ਫ਼ਾਲੋ",
"timeline_hint.resources.statuses": "ਪੂਰਾਣੀਆਂ ਪੋਸਟਾਂ",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"units.short.billion": "{count}ਿਬ",
"units.short.million": "{count}ਮਿ",
"units.short.thousand": "{count}ਹਜ਼ਾਰ",
"upload_form.audio_description": "ਬੋਲ਼ੇ ਜਾਂ ਸੁਣਨ ਵਿੱਚ ਮੁਸ਼ਕਿਲ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵੇ",
"upload_form.description": "ਅੰਨ੍ਹੇ ਜਾਂ ਦੇਖਣ ਲਈ ਮੁਸ਼ਕਲ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵੇ",
"upload_form.edit": "ਸੋਧ",
"upload_form.undo": "ਮਿਟਾਓ",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_form.undo": "ਟਾਓ",
"upload_form.video_description": "ਬੋਲ਼ੇ, ਸੁਣਨ ਵਿੱਚ ਮੁਸ਼ਕਿਲ, ਅੰਨ੍ਹੇ ਜਾਂ ਘੱਟ ਨਿਗ੍ਹਾ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵਾ",
"upload_modal.apply": "ਲਾਗੂ ਕਰੋ",
"upload_modal.applying": "ਲਾਗੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…",
"upload_modal.choose_image": "ਤਸਵੀਰ ਚੁਣੋ",
"upload_modal.edit_media": "ਮੀਡੀਆ ਸੋਧੋ",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "ਕਾਰਜ ਅਧੀਨ ਹੈ…",
"upload_progress.label": "ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...",
"upload_progress.processing": "ਕਾਰਵਾਈ ਚੱਲ ਰਹੀ ਹੈ…",
"video.exit_fullscreen": "ਪੂਰੀ ਸਕਰੀਨ ਵਿੱਚੋਂ ਬਾਹਰ ਨਿਕਲੋ",
"video.fullscreen": "ਪੂਰੀ ਸਕਰੀਨ",
"video.pause": "ਰਹਾਉ",
"video.pause": "ਠਹਿਰੋ",
"video.play": "ਚਲਾਓ"
}

View File

@ -488,6 +488,7 @@
"onboarding.profile.note": "O tebe",
"onboarding.profile.note_hint": "Môžeš @spomenúť iných ľudí, alebo #haštagy…",
"onboarding.profile.save_and_continue": "Ulož a pokračuj",
"onboarding.profile.title": "Nastavenie profilu",
"onboarding.profile.upload_avatar": "Nahraj profilový obrázok",
"onboarding.profile.upload_header": "Nahraj profilové záhlavie",
"onboarding.share.lead": "Daj ľudom vedieť, ako ťa môžu na Mastodone nájsť!",

View File

@ -496,7 +496,7 @@
"onboarding.share.message": "ฉันคือ {username} ใน #Mastodon! มาติดตามฉันที่ {url}",
"onboarding.share.next_steps": "ขั้นตอนถัดไปที่เป็นไปได้:",
"onboarding.share.title": "แชร์โปรไฟล์ของคุณ",
"onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมที่มีเอกลักษณ์เฉพาะตัว กระจายศูนย์ ที่ซึ่งคุณ—ไม่ใช่อัลกอริทึม—เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:",
"onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมแบบกระจายศูนย์ที่มีเอกลักษณ์เฉพาะตัว ที่ซึ่งคุณ ไม่ใช่อัลกอริทึม เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:",
"onboarding.start.skip": "ไม่ต้องการความช่วยเหลือในการเริ่มต้นใช้งาน?",
"onboarding.start.title": "คุณทำสำเร็จแล้ว!",
"onboarding.steps.follow_people.body": "การติดตามผู้คนที่น่าสนใจคือสิ่งที่ Mastodon ให้ความสำคัญ",

View File

@ -1,4 +1,6 @@
{
"about.blocks": "ئوتتۇراھال مۇلازىمېتىر",
"about.contact": "ئالاقىلاشقۇچى:",
"account.badges.bot": "Bot",
"account.cancel_follow_request": "Withdraw follow request",
"account.posts": "Toots",

View File

@ -8,7 +8,7 @@
"about.domain_blocks.silenced.title": "已受限",
"about.domain_blocks.suspended.explanation": "來自此伺服器的資料都不會被處理、儲存或交換,也無法與此伺服器上的使用者互動或交流。",
"about.domain_blocks.suspended.title": "已停權",
"about.not_available": "無法於伺服器上使用此資訊。",
"about.not_available": "無法於伺服器上使用此資訊。",
"about.powered_by": "由 {mastodon} 提供的去中心化社群媒體",
"about.rules": "伺服器規則",
"account.account_note_header": "備註",
@ -207,14 +207,14 @@
"dismissable_banner.explore_statuses": "這些於此伺服器以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。越多不同人轉嘟及最愛排名更高。",
"dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。越多不同人所嘟出的主題標籤排名更高。",
"dismissable_banner.public_timeline": "這些是來自 {domain} 使用者們跟隨中帳號所發表之最新公開嘟文。",
"embed.instructions": "如要將此嘟文嵌入您的網站,請複製以下程式碼。",
"embed.instructions": "若您欲於您的網站嵌入此嘟文,請複製以下程式碼。",
"embed.preview": "它將顯示成這樣:",
"emoji_button.activity": "活動",
"emoji_button.clear": "清除",
"emoji_button.custom": "自訂",
"emoji_button.flags": "旗幟",
"emoji_button.food": "食物 & 飲料",
"emoji_button.label": "插入表情圖案",
"emoji_button.label": "插入表情符號",
"emoji_button.nature": "自然",
"emoji_button.not_found": "啊就沒這表情符號吼!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物件",
@ -353,11 +353,11 @@
"keyboard_shortcuts.legend": "顯示此說明選單",
"keyboard_shortcuts.local": "開啟本站時間軸",
"keyboard_shortcuts.mention": "提及作者",
"keyboard_shortcuts.muted": "開啟靜音使用者清單",
"keyboard_shortcuts.muted": "開啟靜音使用者列表",
"keyboard_shortcuts.my_profile": "開啟個人檔案頁面",
"keyboard_shortcuts.notifications": "開啟通知欄",
"keyboard_shortcuts.open_media": "開啟媒體",
"keyboard_shortcuts.pinned": "開啟釘選的嘟文清單",
"keyboard_shortcuts.pinned": "開啟釘選的嘟文列表",
"keyboard_shortcuts.profile": "開啟作者的個人檔案頁面",
"keyboard_shortcuts.reply": "回應嘟文",
"keyboard_shortcuts.requests": "開啟跟隨請求列表",
@ -386,7 +386,7 @@
"lists.new.create": "新增列表",
"lists.new.title_placeholder": "新列表標題",
"lists.replies_policy.followed": "任何跟隨的使用者",
"lists.replies_policy.list": "成員清單",
"lists.replies_policy.list": "列表成員",
"lists.replies_policy.none": "沒有人",
"lists.replies_policy.title": "顯示回覆:",
"lists.search": "搜尋您跟隨的使用者",
@ -477,7 +477,7 @@
"onboarding.actions.back": "返回",
"onboarding.actions.go_to_explore": "看看發生什麼新鮮事",
"onboarding.actions.go_to_home": "前往您的首頁時間軸",
"onboarding.compose.template": "你好 #Mastodon",
"onboarding.compose.template": "哈囉 #Mastodon",
"onboarding.follows.empty": "很遺憾,目前未能顯示任何結果。您可以嘗試使用搜尋、瀏覽探索頁面以找尋人們跟隨、或稍候再試。",
"onboarding.follows.lead": "您的首頁時間軸是 Mastodon 的核心體驗。若您跟隨更多人的話,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!",
"onboarding.follows.title": "客製化您的首頁時間軸",
@ -687,7 +687,7 @@
"status.translated_from_with": "透過 {provider} 翻譯 {lang}",
"status.uncached_media_warning": "無法預覽",
"status.unmute_conversation": "解除此對話的靜音",
"status.unpin": "個人檔案頁面取消釘選",
"status.unpin": "個人檔案頁面取消釘選",
"subscribed_languages.lead": "僅選定語言的嘟文才會出現於您的首頁上,並於變更後列出時間軸。選取「無」以接收所有語言的嘟文。",
"subscribed_languages.save": "儲存變更",
"subscribed_languages.target": "變更 {target} 的訂閱語言",

View File

@ -91,7 +91,7 @@ class CustomFilter < ApplicationRecord
filters_hash.values.map { |cache| [cache.delete(:filter), cache] }
end.to_a
active_filters.select { |custom_filter, _| !custom_filter.expired? }
active_filters.reject { |custom_filter, _| custom_filter.expired? }
end
def self.apply_cached_filters(cached_filters, status)

View File

@ -27,29 +27,7 @@ class InitialStateSerializer < ActiveModel::Serializer
end
def meta
store = {
streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
access_token: object.token,
locale: I18n.locale,
domain: Addressable::IDNA.to_unicode(instance_presenter.domain),
title: instance_presenter.title,
admin: object.admin&.id&.to_s,
search_enabled: Chewy.enabled?,
repository: Mastodon::Version.repository,
source_url: instance_presenter.source_url,
version: instance_presenter.version,
limited_federation_mode: Rails.configuration.x.limited_federation_mode,
mascot: instance_presenter.mascot&.file&.url,
profile_directory: Setting.profile_directory,
trends_enabled: Setting.trends,
registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
timeline_preview: Setting.timeline_preview,
activity_api_enabled: Setting.activity_api_enabled,
single_user_mode: Rails.configuration.x.single_user_mode,
trends_as_landing_page: Setting.trends_as_landing_page,
status_page_url: Setting.status_page_url,
sso_redirect: sso_redirect,
}
store = default_meta_store
if object.current_account
store[:me] = object.current_account.id.to_s
@ -125,6 +103,32 @@ class InitialStateSerializer < ActiveModel::Serializer
private
def default_meta_store
{
access_token: object.token,
activity_api_enabled: Setting.activity_api_enabled,
admin: object.admin&.id&.to_s,
domain: Addressable::IDNA.to_unicode(instance_presenter.domain),
limited_federation_mode: Rails.configuration.x.limited_federation_mode,
locale: I18n.locale,
mascot: instance_presenter.mascot&.file&.url,
profile_directory: Setting.profile_directory,
registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
repository: Mastodon::Version.repository,
search_enabled: Chewy.enabled?,
single_user_mode: Rails.configuration.x.single_user_mode,
source_url: instance_presenter.source_url,
sso_redirect: sso_redirect,
status_page_url: Setting.status_page_url,
streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
timeline_preview: Setting.timeline_preview,
title: instance_presenter.title,
trends_as_landing_page: Setting.trends_as_landing_page,
trends_enabled: Setting.trends,
version: instance_presenter.version,
}
end
def object_account_user
object.current_account.user
end

View File

@ -21,7 +21,7 @@ class UpdateAccountService < BaseService
def authorize_all_follow_requests(account)
follow_requests = FollowRequest.where(target_account: account)
follow_requests = follow_requests.preload(:account).select { |req| !req.account.silenced? }
follow_requests = follow_requests.preload(:account).reject { |req| req.account.silenced? }
AuthorizeFollowWorker.push_bulk(follow_requests, limit: 1_000) do |req|
[req.account_id, req.target_account_id]
end

View File

@ -175,7 +175,7 @@ SimpleForm.setup do |config|
# config.item_wrapper_class = nil
# How the label text should be generated altogether with the required text.
config.label_text = lambda { |label, required, _explicit_label| "#{label} #{required}" }
config.label_text = ->(label, required, _explicit_label) { "#{label} #{required}" }
# You can define the class to use on all labels. Default is nil.
# config.label_class = nil

View File

@ -1,13 +1,8 @@
# frozen_string_literal: true
module Rack
class Request
def trusted_proxy?(ip)
if Rails.application.config.action_dispatch.trusted_proxies.nil?
super
else
Rails.application.config.action_dispatch.trusted_proxies.any? { |proxy| proxy === ip }
end
end
end
unless Rails.application.config.action_dispatch.trusted_proxies.nil?
# Rack is configured with a default collection of trusted proxies
# If Rails has been configured to use a specific list, configure
# Rack to use this Proc, which enforces the Rails-configured list.
Rack::Request.ip_filter = ->(ip) { Rails.application.config.action_dispatch.trusted_proxies.include?(ip) }
end

View File

@ -0,0 +1,8 @@
---
ia:
activerecord:
attributes:
user:
password: Contrasigno
user/account:
username: Nomine de usator

View File

@ -0,0 +1 @@
ie:

View File

@ -0,0 +1,51 @@
---
lad:
activerecord:
attributes:
poll:
expires_at: Limito temporal
options: Opsyones
user:
agreement: Akodro de servisyo
email: Adreso de posta elektronika
locale: Lingua
password: Kod
user/account:
username: Nombre de uzador
user/invite_request:
text: Razon
errors:
models:
account:
attributes:
username:
invalid: solo puede kontener letras, shifras i sulinyados
reserved: esta rezervado
admin/webhook:
attributes:
url:
invalid: no es adreso URL valido
doorkeeper/application:
attributes:
website:
invalid: no es adreso URL valido
import:
attributes:
data:
malformed: tiene formato yerrado
user:
attributes:
email:
blocked: uza un prokurador de posta no autorizado
unreachable: no parese existir
role_id:
elevated: no puede ser mas alto ke tu rolo aktual
user_role:
attributes:
permissions_as_keys:
dangerous: inkluir permisos ke no son siguros para el rolo de baza
elevated: no se puede inkluir permisos kualos no tiene tu rolo aktual
own_role: no se puede trokar kon tu rolo aktual
position:
elevated: no puede ser mas alto ke tu rolo aktual
own_role: no se puede trokar kon tu rolo aktual

View File

@ -1 +1,23 @@
---
pa:
activerecord:
attributes:
poll:
expires_at: ਆਖਰੀ ਤਾਰੀਖ
options: ਚੋਣਾਂ
user:
agreement: ਸੇਵਾ ਸਮਝੌਤਾ
email: ਈਮੇਲ ਪਤਾ
locale: ਲੋਕੇਲ
password: ਪਾਸਵਰਡ
user/account:
username: ਵਰਤੋਂਕਾਰ-ਨਾਂ
user/invite_request:
text: ਕਾਰਨ
errors:
models:
account:
attributes:
username:
invalid: ਸਿਰਫ਼ ਅੱਖਰ, ਅੰਕ ਅਤੇ ਹੇਠਾਂ-ਰੇਖਾ ਹੀ ਹੋੋਣੀ ਚਾਹੀਦੀ ਹੈ
reserved: ਰਾਖਵਾਂ ਹੈ

View File

@ -0,0 +1 @@
ia:

View File

@ -0,0 +1 @@
ie:

View File

@ -13,7 +13,7 @@ io:
locked: Tua konto esas extingita.
not_found_in_database: Nejusta %{authentication_keys}.
pending: Vua konti ankore kontrolesas.
timeout: Tua kunsido expiris. Voluntez rienirar por durar.
timeout: Vua kunsido expiris. Voluntez rienirar por avancar.
unauthenticated: Tu devas enirar o membreskar por durar.
unconfirmed: Tu devas konfirmar tua konto por durar.
mailer:
@ -102,7 +102,7 @@ io:
unlocks:
send_instructions: Tu recevos retpost-mesajo kun instrucioni por riacendar tua konto pos kelka minuti.
send_paranoid_instructions: Se tua retpost-adreso existas en nia datumbazo, tu recevos ligilo por riacendar tua konto per retpost-meajo.
unlocked: Tua konto riacendesis senprobleme, tu nun esas enirinta.
unlocked: Vua konto desklefagesis senprobleme. Voluntez enirar por avancar.
errors:
messages:
already_confirmed: ja konfirmesis, voluntez probar enirar

View File

@ -0,0 +1 @@
lad:

View File

@ -1 +1,18 @@
---
pa:
devise:
confirmations:
confirmed: ਤੁਹਾਡੇ ਈਮੇਲ ਸਿਰਨਾਵੇਂ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਤਸਦੀਕ ਕੀਤਾ ਗਿਆ ਹੈ।
failure:
inactive: ਤੁਹਾਡਾ ਖਾਤਾ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।
invalid: ਗਲਤ %{authentication_keys} ਜਾਂ ਪਾਸਵਰਡ ਹੈ।
last_attempt: ਤੁਹਾਡੇ ਖਾਤੇ ਦੇ ਲਾਕ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰ ਕੋਸ਼ਿਸ਼ ਬਾਕੀ ਹੈ।
locked: ਤੁਹਾਡਾ ਖਾਤਾ ਲਾਕ ਹੋ ਗਿਆ ਹੈ।
not_found_in_database: ਗਲਤ %{authentication_keys} ਜਾਂ ਪਾਸਵਰਡ ਹੈ।
pending: ਤੁਹਾਡਾ ਖਾਤਾ ਹਾਲੇ ਵੀ ਪੜਤਾਲ ਅਧੀਨ ਹੈ।
timeout: ਤੁਹਾਡੇ ਸ਼ੈਸ਼ਨ ਦੀ ਮਿਆਦ ਪੁੱਗੀ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ ਫੇਰ ਲਾਗਇਨ ਕਰੋ।
unauthenticated: ਜਾਰੀ ਰੱਖਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਜਾਂ ਸਾਈਨ ਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
sessions:
already_signed_out: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਆਉਟ ਕੀਤਾ।
signed_in: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਇਨ ਕੀਤਾ।
signed_out: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਆਉਟ ਕੀਤਾ।

View File

@ -0,0 +1 @@
ia:

View File

@ -0,0 +1,11 @@
---
ie:
doorkeeper:
grouped_scopes:
title:
follow: Seques, silentias e bloccas
mutes: Silentias
scopes:
read:mutes: vider tui silentias
write:conversations: silentiar e deleter conversationes
write:mutes: silentiar persones e conversationes

View File

@ -122,12 +122,14 @@ io:
admin/accounts: Administrar di konti
admin/all: Omna administrofuncioni
admin/reports: Administro di raporti
all: Kompleta aceso a vua Mastodon-konto
blocks: Restriktita
bookmarks: Libromarki
conversations: Konversi
crypto: Intersequanta chifro
favourites: Favoriziti
filters: Filtrili
follow: Sequati, silencigati e blokusati
follows: Sequati
lists: Listi
media: Mediatachaji

View File

@ -0,0 +1 @@
lad:

View File

@ -1 +1,85 @@
---
pa:
activerecord:
attributes:
doorkeeper/application:
name: ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਨਾਂ
website: ਐਪਲੀਕੇਸ਼ਨ ਵੈੱਬਸਾਈਟ
doorkeeper:
applications:
buttons:
authorize: ਪਰਮਾਣਿਤ
cancel: ਰੱਦ ਕਰੋ
destroy: ਖਾਰਜ
edit: ਸੋਧੋ
submit: ਭੇਜੋ
confirmations:
destroy: ਪੱਕਾ?
edit:
title: ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸੋਧੋ
form:
error: ਓਹ ਹੋ! ਸੰਭਾਵਿਤ ਗਲਤੀਆਂ ਲਈ ਆਪਣੇ ਫਾਰਮ ਦੀ ਜਾਂਚ ਕਰੋ
index:
application: ਐਪਲੀਕੇਸ਼ਨ
callback_url: ਕਾਲਬੈਕ URL
delete: ਹਟਾਓ
empty: ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ।
name: ਨਾਂ
new: ਨਵੀਂ ਐਪਲੀਕੇਸ਼ਨ
scopes: ਸਕੋਪ
show: ਵੇਖਾਓ
title: ਤੁਹਾਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ
new:
title: ਨਵੀਂ ਐਪਲੀਕੇਸ਼ਨ
show:
actions: ਕਾਰਵਾਈਆਂ
application_id: ਕਲਾਈਂਟ ਕੁੰਜੀ
callback_urls: ਕਾਲਬੈਕ URL
scopes: ਸਕੋਪ
secret: ਕਲਾਈਂਟ ਭੇਤ
title: 'ਐਪਲੀਕੇਸ਼ਨ: %{name}'
authorizations:
buttons:
authorize: ਪਰਮਾਣਿਤ
deny: ਇਨਕਾਰ ਕਰੋ
error:
title: ਗਲਤੀ ਆਈ ਹੈ
new:
review_permissions: ਇਜਾਜ਼ਤਾਂ ਦੀ ਪੜਤਾਲ ਕਰੋ
title: ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ
authorized_applications:
buttons:
revoke: ਮਨਸੂਖ ਕਰੋ
confirmations:
revoke: ਪੱਕਾ?
index:
authorized_at: "%{date} ਨੂੰ ਪਰਮਾਣਿਤ ਕੀਤਾ"
last_used_at: "%{date} ਨੂੰ ਆਖਰੀ ਵਾਰ ਵਰਤਿਆ"
never_used: ਕਦੀ ਨਹੀਂ ਵਰਤਿਆ
scopes: ਇਜਾਜ਼ਤਾਂ
superapp: ਅੰਦਰੂਨੀ
grouped_scopes:
title:
accounts: ਖਾਤੇ
blocks: ਪਾਬੰਦੀਸ਼ੁਦਾ
bookmarks: ਬੁੱਕਮਾਰਕ
crypto: ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇੰਕ੍ਰਿਪਸ਼ਨ
favourites: ਮਨਪਸੰਦ
filters: ਫਿਲਟਰ
follow: ਫ਼ਾਲੋ, ਮੌਨ ਅਤੇ ਪਾਬੰਦੀ ਲਾਏ
follows: ਫ਼ਾਲੋ
lists: ਸੂਚੀਆਂ
media: ਨੱਥੀ ਕੀਤਾ ਮੀਡੀਆ
mutes: ਮੌਨ
notifications: ਨੋਟੀਫਿਕੇਸ਼ਨ
reports: ਰਿਪੋਰਟਾਂ
search: ਖੋਜੋ
statuses: ਪੋਸਟਾਂ
layouts:
admin:
nav:
applications: ਐਪਲੀਕੇਸ਼ਨਾਂ
scopes:
write:follows: ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ
write:lists: ਸੂਚੀਆਂ ਬਣਾਓ
write:media: ਮੀਡੀਆ ਫਾਇਲਾਂ ਅੱਪਲੋਡ ਕਰੋ

View File

@ -777,6 +777,8 @@ eu:
open: Edonork eman dezake izena
security:
authorized_fetch: Eskatu autentifikazioa federatutako zerbitzarietatik
authorized_fetch_hint: Zerbitzari federatuen autentifikazioa eskatzeak erabiltzaile-mailako zein zerbitzari-mailako blokeak zorrotzago betearaztea ahalbidetzen du. Hala ere, horrek errendimendu galera dakar, zure erantzunen irismena murrizten du eta baliteke federatutako zerbitzu batzuekin bateragarritasun-arazoak sortu ahal izatea. Horrez gain, horrek ez du eragotziko aktore dedikatuek zure mezu eta kontu publikoak eskuratzea.
authorized_fetch_overridden_hint: Une honetan ezin duzu ezarpen hau aldatu ingurune-aldagai batek gainidazten duelako.
federation_authentication: Federazio autentifikazioaren betearaztea
title: Zerbitzariko ezarpenak
site_uploads:
@ -784,6 +786,7 @@ eu:
destroyed_msg: Guneko igoera ongi ezabatu da!
software_updates:
critical_update: Kritikoa — mesedez, eguneratu azkar
description: Zure Mastodon instalazioa eguneratuta mantentzea gomendatzen da azken konponketa eta hobekuntzak edukitzeko. Gainera, batzuetan funtsezkoa da Mastodon garaiz eguneratzea segurtasun-arazoak saihesteko. Arrazoi horiengatik, Mastodonek eguneratzeak egiaztatzen ditu 30 minuturo, eta zure posta elektronikoko jakinarazpen-hobespenen arabera jakinaraziko dizu.
documentation_link: Informazio gehiago
release_notes: Bertsio oharrak
title: Eguneraketak eskuragarri
@ -791,6 +794,7 @@ eu:
types:
major: Argitalpen handia
minor: Argitalpen txikia
patch: Partxe eguneraketa — akatsen konponketa eta aplikatzeko aldaketa errazak
version: Bertsioa
statuses:
account: Egilea
@ -976,6 +980,7 @@ eu:
next_steps: Apelazioa onartu dezakezu moderazio erabakia desegiteko, edo ez ikusia egin.
subject: "%{username} erabiltzailea %{instance} instantziako moderazio erabaki bat apelatzen ari da"
new_critical_software_updates:
body: Mastodon-en bertsio kritiko berriak kaleratu dira, agian lehenbailehen eguneratu nahi duzu!
subject: "%{instance} ek eguneraketa kritikoak eskuragarri ditu!"
new_pending_account:
body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu.
@ -1037,10 +1042,12 @@ eu:
hint_html: Azken kontu bat! Gizakia zarela berretsi behar dugu (zabor-kontuak kanpoan mantentzeko baino ez da!) Ebatzi azpiko CAPTCHA eta sakatu "Jarraitu".
title: Segurtasun txekeoa
confirmations:
awaiting_review: Zure helbide elektronikoa baieztatu da! %{domain} lan taldea zure erregistroa berrikusten ari da. Mezu elektroniko bat jasoko duzu zure kontua onartzen badute!
awaiting_review_title: Zure izen-ematea berrikusten ari da
clicking_this_link: lotura hau klikatzen
login_link: hasi saioa
proceed_to_login_html: Orain jarraitu dezakezu %{login_link} -era.
redirect_to_app_html: "<strong>%{app_name}</strong> aplikaziora berbideratua izan beharko zenuke. Hori gertatu ez bada, saiatu %{clicking_this_link} edo eskuz itzuli."
registration_complete: Osatuta dago orain zure izen-ematea %{domain} -en!
welcome_title: Ongi etorri, %{name}!
wrong_email_hint: Helbide-elektroniko hori zuzena ez bada, kontuaren ezarpenetan alda dezakezu.

52
config/locales/ia.yml Normal file
View File

@ -0,0 +1,52 @@
---
ia:
admin:
accounts:
delete: Deler datos
deleted: Delite
display_name: Nomine visibile
enabled: Activate
location:
all: Toto
title: Location
moderation:
disabled: Disactivate
reset: Reinitialisar
reset_password: Reinitialisar contrasigno
search: Cercar
security: Securitate
username: Nomine de usator
custom_emojis:
copy: Copiar
create_new_category: Crear nove categoria
delete: Deler
domain_blocks:
confirm_suspension:
cancel: Cancellar
export: Exportar
import: Importar
email_domain_blocks:
add_new: Adder nove
delete: Deler
export_domain_allows:
no_file: Necun file seligite
follow_recommendations:
language: Per lingua
status: Stato
instances:
dashboard:
instance_languages_dimension: Linguas principal
delivery:
unavailable: Non disponibile
private_comment: Commento private
public_comment: Commento public
invites:
filter:
available: Disponibile
ip_blocks:
delete: Deler
expires_in:
'1209600': 2 septimanas
'15778476': 6 menses
'2629746': 1 mense
'86400': 1 die

68
config/locales/ie.yml Normal file
View File

@ -0,0 +1,68 @@
---
ie:
accounts:
pin_errors:
following: Tu deve ja sequer li person quem tu vole indossar
admin:
action_logs:
action_types:
create_announcement: Crear un proclamation
destroy_announcement: Deleter un proclamation
update_announcement: Actualisar un proclamation
actions:
create_announcement_html: "%{name} creat li nov proclamation %{target}"
destroy_announcement_html: "%{name} deletet li proclamation %{target}"
update_announcement_html: "%{name} actualisat li proclamation %{target}"
announcements:
destroyed_msg: Proclamation deletet successosimen!
edit:
title: Redacter proclamation
empty: Null proclamationes trovat.
live: Activ
new:
create: Crear un proclamation
title: Nov proclamation
publish: Publicar
published_msg: Proclamation publicat successosimen!
scheduled_for: Planat por %{time}
scheduled_msg: Proclamation planat por publication!
title: Proclamationes
unpublish: Despublicar
unpublished_msg: Proclamation despublicat successosimen!
updated_msg: Proclamation actualisat successosimen!
roles:
privileges:
manage_announcements: Tractar proclamationes
manage_announcements_description: Permisse usatores tractar proclamationes sur li servitor
exports:
mutes: Tu silentia
featured_tags:
hint_html: "<strong>Pinglar tui max important hashtags sur tui profil.</strong> Un bonissim maniere de mantener un registre de tui ovres e projectes, pinglat hashtags es monstrat prominentmen sur tui profil e permisse rapid accesse a tui propri postas."
imports:
overwrite_preambles:
muting_html: Tu va <strong>remplazzar tui liste de silentiat contos</strong> per til <strong>%{total_items} contos</strong> de <strong>%{filename}</strong>.
preambles:
muting_html: Tu va <strong>silentiar</strong> til <strong>%{total_items} contos</strong> de <strong>%{filename}</strong>.
titles:
muting: Importation de silentiat contos
type_groups:
destructive: Bloccas & silentias
move_handler:
carry_mutes_over_text: Ti-ci usator movet se de %{acct}, quel tu hat silentiat.
notification_mailer:
follow_request:
action: Tractar petitiones de sequer
body: "%{name} ha petit sequer te"
subject: 'Pendent sequitor: %{name}'
title: Nov petition de sequer
mention:
action: Responder
statuses:
pin_errors:
direct: On ne posse pinglar postas queles es visibil solmen a mentionat usatores
limit: Tu ja ha pinglat li maxim númere de postas
ownership: On ne posse pinglar li posta de un altri person
reblog: On ne posse pinglar un boost
statuses_cleanup:
keep_pinned: Conservar pinglat postas
keep_pinned_hint: Delete null de tui pinglat postas

View File

@ -91,6 +91,7 @@ io:
moderation:
active: Aktiva
all: Omna
disabled: Desaktivigita
pending: Vartanta
silenced: Limitizita
suspended: Restriktita
@ -116,12 +117,16 @@ io:
redownloaded_msg: Sucesoze rifreshis profilo di %{username} de origino
reject: Refuzez
rejected_msg: Sucesoze refuzis registroapliko di %{username}
remote_suspension_irreversible: La datumi di ca konto esas nerenversebla efacita.
remote_suspension_reversible_hint_html: Ca konto restriktesis che lua servilo, e la datumi tota efacesos ye %{date}. Ante ta tempo, la fora servilo povos restaurar ca konto sen irga mala efecti. Se vu volas efacar omna datumi dil konto quik, vu povas facar lo sube.
remove_avatar: Efacez profilimajo
remove_header: Efacez kapimajo
removed_avatar_msg: Sucesoze efacis profilimajo di %{username}
removed_header_msg: Sucesoze efacis kapimajo di %{username}
resend_confirmation:
already_confirmed: Ca uzanto ja konfirmesis
send: Risendez konfirmligilo
success: Konfirmligilo sucesoze sendesas!
reset: Richanjez
reset_password: Richanjez pasvorto
resubscribe: Riabonez
@ -129,6 +134,7 @@ io:
search: Trovez
search_same_email_domain: Altra uzanti kun sama retpostodomeno
search_same_ip: Altra uzanti kun sama IP
security: Sekureso
security_measures:
only_password: Nur pasvorto
password_and_2fa: Pasvorto e 2FA
@ -205,6 +211,7 @@ io:
reject_user: Refuzez uzanto
remove_avatar_user: Efacez profilimajo
reopen_report: Riapertez raporto
resend_user: Risendez konfirmretposto
reset_password_user: Richanjez pasvorto
resolve_report: Rezolvez raporto
sensitive_account: Forcsentoza konto
@ -263,6 +270,7 @@ io:
reject_user_html: "%{name} refuzis registro de %{target}"
remove_avatar_user_html: "%{name} efacis profilimajo de %{target}"
reopen_report_html: "%{name} riapertis raporto %{target}"
resend_user_html: "%{name} risendis konfirmretposto por %{target}"
reset_password_user_html: "%{name} richanjis pasvorto de uzanto %{target}"
resolve_report_html: "%{name} rezolvis raporto %{target}"
sensitive_account_html: "%{name} markizis medii di %{target} quale sentoza"
@ -279,6 +287,7 @@ io:
update_ip_block_html: "%{name} kreis regulo por IP %{target}"
update_status_html: "%{name} novigis posto da %{target}"
update_user_role_html: "%{name} chanjis rolo di %{target}"
deleted_account: konto efacita
empty: Nula logi.
filter_by_action: Filtrez segun ago
filter_by_user: Filtrez segun uzanto
@ -300,6 +309,7 @@ io:
unpublish: Depublikigez
unpublished_msg: Anunco sucesoze depublikigesas!
updated_msg: Anunco sucesoza novigesas!
critical_update_pending: Urjanta aktualigo vartesas
custom_emojis:
assign_category: Insertez kategorio
by_domain: Domeno
@ -373,6 +383,15 @@ io:
undo: Despermisez federato kun domeno
domain_blocks:
add_new: Add new
confirm_suspension:
cancel: Anulez
confirm: Restriktez
permanent_action: Desrestriktar la servilo ne restaurar irga datumi o relati.
preamble_html: Vu restriktos <strong>%{domain}</strong> e lua subdomeni.
remove_all_data: Co efacos omna kontenaji, imaji, videi e profildatumi por la konti di ca domeno de vua servilo.
stop_communication: Vua servilo haltos komunikar kun ca servili.
title: Konfirmez domenoblokuso por %{domain}
undo_relationships: Co desfacos irga sequorelato inter konti di ca servili e vua.
created_msg: Domenobstrukto nun procedesas
destroyed_msg: Domenobstrukto desagesis
domain: Domeno
@ -385,6 +404,7 @@ io:
create: Kreez obstrukto
hint: Domenobstrukto ne preventos kreo di kontrekordaji en datumaturo, ma retroaktive e automate aplikos partikulara jermetodi a ta konti.
severity:
desc_html: "<strong>Limitizez</strong> facos la posti dil konti di ca domeno nevidebla da irgu qua ne sequas li. <strong>Restriktez</strong> efacos omna kontenaji, imaji, videi e profildatumi dil konti di ca domeno de vua servilo. Uzez <strong>Nulo</strong> se vu volas nur refuzar imaji e videi."
noop: Nulo
silence: Limito
suspend: Restriktez
@ -419,9 +439,23 @@ io:
resolve: Rezolvez domeno
title: Obstruktez nova retpostodomeno
no_email_domain_block_selected: Retpostodomenobstrukti ne chanjesis por ke nulo selektesis
not_permitted: Ne permisata
resolved_dns_records_hint_html: Ca domennomo rezolvesas a ca MX-domeni, quale esas ultime responsanta por ganar retposto. Obstruktar MX-domeno obstruktos registri de irga retpostoadreso quo uzas sama MX-domeni, mem se la videbla domennomo esas diferanta. <strong>Sorgemez e ne obstruktez majora retpostositi.</strong>
resolved_through_html: Rezolvesis tra %{domain}
title: Obstruktita retpostodomeni
export_domain_allows:
no_file: Nula dosiero selektesas
export_domain_blocks:
import:
description_html: Vu importacos listo de domenoblokusi. Voluntez kontrolar la listo sorgoze, partikulare se vu ne kreis la listo personale.
existing_relationships_warning: Existanta sequo-relati
private_comment_description_html: 'Por helpar vu savar de ube importacita blokusi venis, importacita blokusi kreesos kun la sequanta komento privata: <q>%{comment}</q>'
private_comment_template: Importacita de %{source} ye %{date}
title: Importacar domenoblokusi
invalid_domain_block: 'Un o plu kam un domenoblokuso omisesis pro la sequanta eroro(-i): %{error}'
new:
title: Importacar domenoblokusi
no_file: Nula dosiero selektesas
follow_recommendations:
description_html: "<strong>Sequorekomendi helpas nova uzanti rapide trovar interesanta kontenajo</strong>. Se uzanto ne interagas kun altra personi sate por igar personaligita sequorekomendi, ca konti rekomendas. Oli rikalkulesas die de mixo di konti kun maxim alta recenta interagi e maxim altra lokala sequantoquanto segun selektita linguo."
language: Por linguo
@ -450,6 +484,7 @@ io:
content_policies:
comment: Interna noto
description_html: Vu povas fixar kontenajguidili quo aplikesos a omna konti de ca domeno e irga oli subdomeni.
limited_federation_mode_description_html: Vu povas selektar ka vu permisos federar kun ca domeno.
policies:
reject_media: Refusez medii
reject_reports: Refusez raporti
@ -497,6 +532,7 @@ io:
total_reported: Raporti pri oli
total_storage: Mediiatachaji
totals_time_period_hint_html: Sumi quo montresas sube inkluzas informi de pos la komenco.
unknown_instance: Prezente ne esas registrago pri ta domeno che ca servilo.
invites:
deactivate_all: Deaktivigez omno
filter:
@ -553,20 +589,27 @@ io:
mark_as_sensitive_description_html: Medii en raportizita posti markizesos quale sentoza e streko rekordigesos por helpar vu intensigar en nexta malagi da la sama konto.
other_description_html: Videz plu multa opcioni por dominacar konduto di konto e kustumizar komuniko a raportizita konto.
resolve_description_html: Nulo agesos kontre raportizita konto, streko ne rekordizesos e raporto klozesos.
silence_description_html: Konto esos videbla nur por personi qui ja sequas lo o manuale serchas lo, severe limitizante lua atingo. On sempre povas desfacar co. Klozas omna raporti kontra ca konto.
suspend_description_html: Ca konto e omna kontenaji esos neacesebla e efacota, e interagar kun ol esos neposibla. Desfacebla dum 30 dii. Klozas omna raporti kontra ca konto.
actions_description_html: Decidez ago por rezolvar ca raporto. Se vu decidar puniso kontre raportizesis konto, retpostoavizo sendesos a ol, ecepte kande <strong>Spam</strong> kategorio selektesis.
actions_description_remote_html: Selektez quo vu agos por solvar ca raporto. Co nur efektigos quale <strong>vua</strong> servilo komunikas kun ca fora konto e traktas lua kontenaji.
add_to_report: Insertez pluse a raporto
are_you_sure: Ka vu esas certa?
assign_to_self: Taskigez me
assigned: Taskigita jerero
by_target_domain: Domeno di raportizita konto
cancel: Anulez
category: Kategorio
category_description_html: La motivo ke ca konto e kontenajo raportizesis citesos por komuniko kun raportizita konto
comment:
none: Nulo
comment_description_html: 'Por donar plu multa informo, %{name} skribis:'
confirm: Konfirmez
confirm_action: Konfirmez jero-ago kontra @%{acct}
created_at: Raportizesis
delete_and_resolve: Efacez posti
forwarded: Sendesis
forwarded_replies_explanation: Ca raporto esas de fora uzanto e pri fora kontenajo. Esis dissemata a vu pro ke la raportita kontenajo es respondo a un ek vua uzanti.
forwarded_to: Sendesis a %{domain}
mark_as_resolved: Markizez quale rezolvita
mark_as_sensitive: Markizez quale sentoza
@ -580,6 +623,7 @@ io:
placeholder: Deskriptez quo agesis o irga relatita novaji...
title: Noti
notes_description_html: Videz e pozez noti a altra jereri e vua su en futuro
processed_msg: 'Raporto #%{id} sucesoze traktita'
quick_actions_description_html: 'Agetez o volvez base por vidar raportizita kontenajo:'
remote_user_placeholder: nelokala uzanti de %{instance}
reopen: Riapertez raporto
@ -592,9 +636,28 @@ io:
status: Stando
statuses: Raportizita kontenajo
statuses_description_html: Ofensanta kontenajo citesos en komuniko kun raportizita konto
summary:
action_preambles:
delete_html: 'Vu <strong>efacos</strong> kelka posti di <strong>@%{acct}</strong>. Co facos lo sequanta:'
mark_as_sensitive_html: 'Vu <strong>markizos</strong> kelka posti di <strong>@%{acct}</strong> quale <strong>provokema</strong>. Co facos lo sequanta:'
silence_html: 'Vu <strong>limitizos</strong> la konto di <strong>@%{acct}</strong>. Co facos lo sequanta:'
suspend_html: 'Vu <strong>restriktos</strong> la konto di <strong>@%{acct}</strong>. Co facos lo sequanta:'
actions:
delete_html: Efacar la ofensiva posti
mark_as_sensitive_html: Markizar la atachuri dil posti quale provokema
silence_html: Severe limitizar la atingo dil konto di <strong>@%{acct}</strong> per facar ke lua profilo e posti es videbla nur a personi qui ja sequas lu o qui manuale serchas lua profilo
suspend_html: Restriktar <strong>@%{acct}</strong>, facante ke lua profilo e kontenaji neacesibla e neposibla por interagado
close_report: 'Markizar raporto #%{id} quale solvita'
close_reports_html: Markizar <strong>omna</strong> raporti contra <strong>@%{acct}</strong> quale solvita
delete_data_html: Efacor la profilo e kontenaji di <strong>@%{acct}</strong> ye 30 dii de nun ecepte ke lu esus desrestrikita ante ta tempe
preview_preamble_html: "<strong>@%{acct}</strong> recevos averto kun la sequanta kontenajo:"
record_strike_html: Registrar punto kontra <strong>@%{acct}</strong> por helpar vu traktar futura reguloviolaci di ca konto
send_email_html: Sendez a <strong>@%{acct}</strong> avertala retposto
warning_placeholder: Neobligata plusa expliko por la jero-ago.
target_origin: Fonto di raportizita konto
title: Raporti
unassign: Detaskigez
unknown_action_msg: 'Nekonocata ago: %{action}'
unresolved: Nerezolvita
updated_at: Novigesis
view_profile: Videz profilo
@ -676,14 +739,21 @@ io:
branding:
preamble: Fabrikmarko di ca servilo diferentigas lu de altra servili en la reto. Ca informi forsan montresas che diversa loki. Do, ca informi debas esar klara.
title: Fabrikmarkeso
captcha_enabled:
title: Postular ke nova uzanti solvos CAPTCHA por konfirmar lia konti
content_retention:
preamble: Dominacez quale uzantigita kontenajo retenesar en Mastodon.
title: Kontenajreteneso
default_noindex:
desc_html: Efektigas omna uzanti qui ne personale chanjis ca opciono
title: Despartoprenigez uzanti de serchilo-indexi quale originala stando
discovery:
follow_recommendations: Sequez rekomendaji
preamble: Montrar interesanta kontenajo esas importanta ye voligar nova uzanti quo forsan ne savas irgu. Dominacez quale ca deskovrotraiti funcionar en ca servilo.
profile_directory: Profilcheflisto
public_timelines: Publika tempolinei
publish_discovered_servers: Publikar deskovrita servili
publish_statistics: Publikar statistiki
title: Deskovro
trends: Tendenci
domain_blocks:
@ -698,20 +768,51 @@ io:
approved: Aprobo bezonesas por registro
none: Nulu povas registrar
open: Irgu povas registrar
security:
authorized_fetch: Postular autentikigo de federata servili
authorized_fetch_hint: Postular autentikigo de federata servili kapabligar plu strikta enforcigo dil blokusi di uzanti e dil servilo. Tamen, co enduktos exekutado-lentigo, diminutos la atingebleso di via respondi, e forsan enduktos koncilieblesoproblemi kun kelka softwari federata. Pluse, co ne preventos aganti dedikita de acesar vua publika posti e konti.
authorized_fetch_overridden_hint: Vu prezente ne povas chanjar ca opciono pro ke ol es remplasata da environmentala varieblo.
federation_authentication: Enforcigo di federado-autentikigo
title: Servilopcioni
site_uploads:
delete: Efacez adchargita failo
destroyed_msg: Sitadchargito sucesoze efacesis!
software_updates:
critical_update: Urjanta — voluntez aktualigar rapide
description: On rekomendas ke vu sempre aktualigas vua Mastodon-instaluro por profitar la maxim nova solvuri e novaji. Pluse, kelkafoye es importantega aktualigar Mastodon rapide por evitar sekuresoproblemi. Pro ca motivi, Mastodon serchas aktualigi mihorale, e notifikos vu segun vua opcioni pri retposto-notifiki.
documentation_link: Lernez pluse
release_notes: Emiso-noti
title: Aktualigi disponebla
type: Tipo
types:
major: Majora emiso
minor: Minora emiso
patch: Mikra emiso — problemosolvuri e chanji facila a facar
version: Versiono
statuses:
account: Skribinto
application: Apliko
back_to_account: Retrovenez a kontopagino
back_to_report: Retrovenez a raportpagino
batch:
remove_from_report: Efacez de raporto
report: Raportizez
deleted: Efacesis
favourites: Favoriziti
history: Historio di versioni
in_reply_to: Respondante a
language: Linguo
media:
title: Medii
metadata: Metadatumi
no_status_selected: Nula posti chanjesis pro ke nulo selektesis
open: Apertez posto
original_status: Originala posto
reblogs: Dissemi
status_changed: Posto chanjita
title: Kontoposti
trending: Populara
visibility: Videbleso
with_media: Kun medii
strikes:
actions:
@ -724,9 +825,14 @@ io:
suspend: "%{name} restriktis konto di %{target}"
appeal_approved: Apelis
appeal_pending: Vartata apelo
appeal_rejected: Apelo refuzita
system_checks:
database_schema_check:
message_html: Existas vartanta datamaturmigri. Startez por certigar ke la softwaro kondutar quale expektita
elasticsearch_preset:
action: Videz la dokumentajo
elasticsearch_preset_single_node:
action: Videz la dokumentajo
elasticsearch_running_check:
message_html: Ne povas konektas a Elasticsearch. Kontrolez ke ol functionas o desaktivigez textokompleta trovo
elasticsearch_version_check:
@ -737,6 +843,18 @@ io:
message_html: Vu ne fixis irga servilreguli.
sidekiq_process_check:
message_html: Sidekiq procedo ne funcionas ye %{value} fask(o). Kontrolez vua opciono di Sidekiq
software_version_critical_check:
action: Videz la aktualigi disponebla
message_html: Urjanta Mastodon-aktualigo es disponebla, voluntez aktualigar la servilo tam rapide kam es posibla.
software_version_patch_check:
action: Videz la aktualigi disponebla
message_html: Problemosolvanta Mastodon-aktualigo es disponebla.
upload_check_privacy_error:
action: Konsultez hike por plu multa informo
message_html: "<strong>Vua retservilo es misfigurizita. La privateso di vua uzanti es domajebla.</strong>"
upload_check_privacy_error_object_storage:
action: Konsultez hike por plu multa informo
message_html: "<strong>Vua dosierokonservo es misfigurizita. La privateso di vua uzanti es domajebla.</strong>"
tags:
review: Kontrolez stando
updated_msg: Hashtagopcioni novigesis sucesoze
@ -759,6 +877,7 @@ io:
other: Partigesis da %{count} personi de pos antea semano
title: Tendencoza ligili
usage_comparison: Partigesis %{today} foyi hodie, la nombro esas %{yesterday} hiere
not_allowed_to_trend: Ne permisita quale popularo
only_allowed: Nur permisato
pending_review: Vartas kontrolo
preview_card_providers:
@ -843,6 +962,9 @@ io:
body: "%{target} apelas jerdecido da %{action_taken_by} de %{date}, quale esis %{type}. Oli skribis:"
next_steps: Vu povas aprobar apelo por deagar jerdecido o ignorar.
subject: "%{username} apela jerdecido che %{instance}"
new_critical_software_updates:
body: Nova urjanta versioni di Mastodon emisesis, vu forsan volas aktualigar tam balde kam es posibla!
subject: Urjanta Mastodon-aktualigi es disponebla por %{instance}!
new_pending_account:
body: Detali de nova konto esas la subo. Vu povas aprobar o refuzar ca apliko.
subject: Nova konto bezonas kontrolesar che %{instance} (%{username})
@ -850,6 +972,9 @@ io:
body: "%{reporter} raportizis %{target}"
body_remote: Ulu de %{domain} raportizis %{target}
subject: Nova raporto por %{instance} (#%{id})
new_software_updates:
body: Nova Mastodon-versioni emisesis, vu forsan volas aktualigar!
subject: Nova Mastodon-versioni es disponebla por %{instance}!
new_trends:
body: 'Ca kozi bezonas kontrol ante ol povas montresar publike:'
new_trending_links:
@ -881,23 +1006,41 @@ io:
notification_preferences: Chanjez retpostopreferaji
salutation: "%{name},"
settings: 'Chanjar la retpost-mesajala preferi: %{link}'
unsubscribe: Desabonez
view: 'Vidar:'
view_profile: Videz profilo
view_status: Videz posto
applications:
created: Apliko sucesoze kreesas
destroyed: Apliko sucesoze efacesas
logout: Ekirez
regenerate_token: Rifacez acesficho
token_regenerated: Acesficho sucesoze riganesas
warning: Sorgemez per ca informi. Ne partigez kun irgu!
your_token: Vua acesficho
auth:
apply_for_account: Demandar konto
captcha_confirmation:
help_html: Se vu ne povas solvar la CAPTCHA, vu povas kontaktar ni per %{email} e ni povas helpar vu.
hint_html: Nur un plusa kozo! Ni postulas ke vu konfirmez ke vu esas homo (co es por ke ni povas preventar mesajachi!). Solvez la suba CAPTCHA e pulsez "Avancez".
title: Sekuresokontrolo
confirmations:
awaiting_review: Vua retpostadreso es konfirmita! La jeraro che %{domain} revuos vua apliko. Vu recevos retposto se li aprobas vua konto!
awaiting_review_title: Vua apliko vartas revuo
clicking_this_link: pulsante ca ligilo
login_link: enirar
proceed_to_login_html: Nun vu povas avancar a %{login_link}.
redirect_to_app_html: Vu devas sendesir al apliko <strong>%{app_name}</strong>. Se to ne evenis, probez %{clicking_this_link} o retroirez manuale al apliko.
registration_complete: Vua registrago che %{domain} nun es kompleta!
welcome_title: Bonvenez, %{name}!
wrong_email_hint: Se ta retpostadreso ne es korekta, vu povas chanjar lo en la konto-opcioni.
delete_account: Efacez konto
delete_account_html: Se vu volas efacar vua konto, vu povas <a href="%{path}">irar hike</a>. Vu demandesos konfirmar.
description:
prefix_invited_by_user: "@%{name} invitas vu juntar ca servilo di Mastodon!"
prefix_sign_up: Registrez che Mastodon hodie!
suffix: Per konto, vu povos sequar personi, postigar novaji e interchanjar mesaji kun uzanti de irga servilo di Mastodon e pluse!
didnt_get_confirmation: Ka vu ne recevis konfirmoligilo?
dont_have_your_security_key: Ka vu ne havas sekuresklefo?
forgot_password: Pasvorto obliviita?
invalid_reset_password_token: Pasvorto richanjoficho esas nevalida o expirita. Demandez novo.
@ -910,18 +1053,39 @@ io:
migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas <a href="%{path}">ajustar hike</a>.
or_log_in_with: O eniras per
privacy_policy_agreement_html: Me lektis e konsentis <a href="%{privacy_policy_path}" target="_blank">privatesguidilo</a>
progress:
confirm: Konfirmar retpostoadreso
details: Vua detali
review: Nia revuo
rules: Aceptar reguli
providers:
cas: CAS
saml: SAML
register: Membreskar
registration_closed: "%{instance} ne aceptas nova membri"
resend_confirmation: Risendez konfirmligilo
reset_password: Chanjar la pasvorto
rules:
accept: Aceptar
back: Retro
invited_by: 'Vu darfas krear konto che %{domain} pro ke vu recevis invito de:'
preamble: Co igesas e exekutesas da jereri di %{domain}.
preamble_invited: Ante ke vu avancos, voluntez konsiderar la reguli kreita dal jeraro di %{domain}.
title: Kelka bazala reguli.
title_invited: Vu esas invitita.
security: Chanjar pasvorto
set_new_password: Selektar nova pasvorto
setup:
email_below_hint_html: Kontrolez vua spam-dosieruro, o demandez altra ligilo. Vu povas korektigar vua retpostadreso se esas nekorekta.
email_settings_hint_html: Uzez la ligilo quan ni sendis a vu por verifikar %{email}. Ni vartos hike.
link_not_received: Ka vu ne recevis ligilo?
new_confirmation_instructions_sent: Vu recevos nova retposto kun la konfirmligilo pos kelka minuti!
title: Kontrolez vua retposti
sign_in:
preamble_html: Enirez per vua <strong>%{domain}</strong> detali. Se vua konto esas che altra servilo, vu ne povos enirar hike.
title: Enirez a %{domain}
sign_up:
manual_review: Registragi che %{domain} es revuata da nia personaro. Por helpar ni traktar vua aplikajo, skribez kelko pri vu e pro quo vu volas konto che %{domain}.
preamble: Per konto en ca servilo di Mastodon, on povas sequar irga persono en ca reto, ne ye ube ona konto hostagisas.
title: Ni komencigez vu en %{domain}.
status:
@ -930,14 +1094,15 @@ io:
functional: Vua konto esas tote funcionoza.
pending: Vua apliko bezonas kontrolo da nia laborero. Co forsan esas nekurta. Vu ganos retposto se vua apliko aprobesas.
redirecting_to: Vua konto esas neaktiva pro ke ol nun ridirektesos a %{acct}.
self_destruct: Pro ke %{domain} balde klozos, vu havas nur aceso limitizata a vua konto.
view_strikes: Videz antea streki kontre vua konto
too_fast: Formulario sendesis tro rapide, probez itere.
use_security_key: Uzes sekuresklefo
challenge:
confirm: Durez
confirm: Avancez
hint_html: "<strong>Guidilo:</strong> Ni ne demandos vua pasvorto itere til 1 horo."
invalid_password: Nevalida pasvorto
prompt: Konfirmez pasvorto por durar
prompt: Konfirmez pasvorto por avancar
crypto:
errors:
invalid_key: ne esas valida klefo Ed25519 o Curve25519
@ -1009,6 +1174,9 @@ io:
your_appeal_rejected: Vua apelo refuzesis
domain_validator:
invalid_domain: ne esas valida domennomo
edit_profile:
basic_information: Fundamentala informo
other: Altra
errors:
'400': Demando quon vu sendis esas nevalida o malstrukturala.
'403': Vu ne havas permiso por vidar ca pagino.
@ -1044,6 +1212,8 @@ io:
storage: Konservado di kontenajo
featured_tags:
add_new: Insertez novo
errors:
limit: Vu ja pinglizis la maxima nombro de hastagi
hint_html: "<strong>Quo esas estelita hashtagi?</strong> Ol montresas eminente che vua publika profilo e povigas personi vidar vua publika posti partikulare kun ta hashtagi. Oli esas bona utensilo por jeretar kreiva agaji e longa projetaji."
filters:
contexts:
@ -1095,7 +1265,9 @@ io:
all_matching_items_selected_html:
one: "<strong>%{count}</strong> kozo quo parigesas kun vua trovato selektesas."
other: Omna <strong>%{count}</strong> kozi quo parigesas kun vua trovato selektesas.
cancel: Anulez
changes_saved_msg: Chanji senprobleme konservita!
confirm: Konfirmez
copy: Kopiez
delete: Efacez
deselect: Deselektez omno
@ -1111,19 +1283,59 @@ io:
other: Ulo ne eventis senprobleme! Voluntez konsultar la suba %{count} eror-raporti
imports:
errors:
empty: CSV-dosiero vakua
invalid_csv_file: 'Nevalida CSV-dosiero. Eroro: %{error}'
over_rows_processing_limit: kontenas plu kam %{count} horizontala lineo
too_large: Dosiero es tro granda
failures: Falii
imported: Importacita
mismatched_types_warning: Semblas ke vu forsan selektis la nekorekta tipo por ca importaco, voluntez kontrolar itere.
modes:
merge: Kombinez
merge_long: Retenez displonebla rekordi e insertez novi
overwrite: Remplasez
overwrite_long: Remplasez nuna rekordi per novi
overwrite_preambles:
blocking_html: Vu <strong>substitucos vua blokusolisto</strong> per til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
bookmarks_html: Vu <strong>substitucos vua libromarki</strong> per til <strong>%{total_items} posti</strong> de <strong>%{filename}</strong>.
domain_blocking_html: Vu <strong>substitucos vua domenoblokusolisto</strong> per til <strong>%{total_items} domeni</strong> de <strong>%{filename}</strong>.
following_html: Vu <strong>sequos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong> e <strong>haltar sequar irga altra konto</strong>.
lists_html: Vu <strong>substitucos vua listi</strong> kun la kontenaji di <strong>%{filename}</strong>. Til <strong>%{total_items} konti</strong> adjuntesos a nova listi.
muting_html: Vu <strong>substitucos vua listo di konti silencigita</strong> per til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
preambles:
blocking_html: Vu <strong>blokusos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
bookmarks_html: Vu adjuntos <strong>%{total_items} posti</strong> de <strong>%{filename}</strong> a vua <strong>libromarki</strong>.
domain_blocking_html: Vu <strong>blokusos</strong> til <strong>%{total_items} domeni</strong> de <strong>%{filename}</strong>.
following_html: Vu <strong>sequos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
lists_html: Vu adjuntos til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong> a vua <strong>listi</strong>. Nova listi kreesos se ne existas listo a quo adjuntar.
muting_html: Vu <strong>silencigos</strong> til <strong>%{total_items}</strong> konti en <strong>%{filename}</strong>.
preface: Tu povas importacar kelka datumi, tal quala listi de omna homi quin tu sequas o blokusas, a tua konto di ca instaluro, per dosiero exportacita de altra instaluro.
recent_imports: Importacaji recenta
states:
finished: Finita
in_progress: Progresanta
scheduled: Projetita
unconfirmed: Nekonfirmata
status: Stando
success: Tua datumi esis senprobleme importacita ed esos traktita quale projetita
time_started: Komencita ye
titles:
blocking: Importacante konti blokusata
bookmarks: Importacante libromarki
domain_blocking: Importacante domeni blokusata
following: Importacante konti sequata
lists: Importacante listi
muting: Importacante konti silencigata
type: Tipo di importaco
type_groups:
constructive: Sequati & libromarki
destructive: Blokusati e silencigati
types:
blocking: Listo de blokusiti
bookmarks: Libromarki
domain_blocking: Domenobstruktolisto
following: Listo de sequati
lists: Listi
muting: Silenciglisto
upload: Kargar
invites:
@ -1138,6 +1350,7 @@ io:
'86400': 1 dio
expires_in_prompt: Nulatempe
generate: Facez invitligilo
invalid: Ca invito ne es valida
invited_by: 'Vu invitesis da:'
max_uses:
one: 1 uzo
@ -1148,6 +1361,9 @@ io:
expires_at: Expiros
uses: Uzi
title: Invitez personi
lists:
errors:
limit: Vu atingis la maxima nombro de listi
login_activities:
authentication_methods:
otp: 2-faktoryurizessoftwaro
@ -1159,6 +1375,21 @@ io:
failed_sign_in_html: Falita enirprob per %{method} de %{ip} (%{browser})
successful_sign_in_html: Sucesoza eniro per %{method} de %{ip} (%{browser})
title: Yurizeshistorio
mail_subscriptions:
unsubscribe:
action: Yes, desabonez
complete: Desabonita
confirmation_html: Ka vu esas certa ke vu volas desabonar de recevar %{type} por Mastodon che %{domain} a vua retpostoadreso %{email}? Vu sempre povas riabonar che vua <a href="%{settings_path}">opcioni pri restposto-notifiki</a>.
emails:
notification_emails:
favourite: notifiko-retposti pri favoriziti
follow: retposti pri sequo-notifiki
follow_request: retposti pri sequo-demandi
mention: retposti pri menciono-notifiki
reblog: retposti pri repeto-notifiki
resubscribe_html: Se vu desabonis eroroze, vu povas riabonar en vua <a href="%{settings_path}">opcioni pri retposto-notifiki</a>.
success_html: Vu ne plus recevos %{type} por Mastodon che %{domain} a vua retpostadreso %{email}.
title: Desabonez
media_attachments:
validations:
images_and_video: Ne povas atachar video a posto quo ja kontenar imaji
@ -1230,14 +1461,15 @@ io:
poll:
subject: Votposto di %{name} finis
reblog:
body: "%{name} diskonocigis tua mesajo:"
subject: "%{name} diskonocigis tua mesajo"
title: Nova busto
body: "%{name} repetis vua posto:"
subject: "%{name} repetis vua posto"
title: Nova repeto
status:
subject: "%{name} nove postigis"
update:
subject: "%{name} modifikis posto"
notifications:
administration_emails: Jerala retpostonotifiki
email_events: Eventi por retpostoavizi
email_events_hint: 'Selektez eventi quon vu volas ganar avizi:'
other_settings: Altra avizopcioni
@ -1274,12 +1506,18 @@ io:
expired: Votposto ja finis
invalid_choice: Selektita votselektajo ne existas
over_character_limit: ne povas esar plu longa kam %{max} literi por sing
self_vote: On ne povas votar en sua propra inquesti
too_few_options: mustas havar kozi
too_many_options: ne povas havar plu kam %{max} kozi
preferences:
other: Altra
posting_defaults: Originala postoopcioni
public_timelines: Publika tempolinei
privacy:
privacy: Privateso
reach: Atingo
search: Sercho
title: Privateso e atingo
privacy_policy:
title: Privatesguidilo
reactions:
@ -1288,7 +1526,11 @@ io:
unrecognized_emoji: ne esas rikonocita emocimajo
relationships:
activity: Kontoaktiveso
confirm_follow_selected_followers: Ka vu es certa ke vu volas sequar la selektata sequati?
confirm_remove_selected_followers: Ka vu es certa ke vu volas revokar la selektata sequati?
confirm_remove_selected_follows: Ka vu es certa ke vu volas revokar la selektata sequanti?
dormant: Neaktiva
follow_failure: Ne esis posibla sequar kelka ek la selektita konti.
follow_selected_followers: Sequez kelka sequanti
followers: Sequanti
following: Sequati
@ -1317,6 +1559,9 @@ io:
over_daily_limit: Vu ecesas limito quale esas %{limit} projetita posti por hodio
over_total_limit: Vu ecesas limito quale esas %{limit} projetita posti
too_soon: Projetita dato mustas esar en futuro
self_destruct:
lead_html: Desfortunoze, <strong>%{domain}</strong> balde klozos. Se vu havis konto ibe, vu ne plus povas uzar it, ma vu ankore povas demandar exportacajo de vua datumi.
title: Ca servilo balde klozos
sessions:
activity: Antea aktiveso
browser: Vidilo
@ -1328,6 +1573,7 @@ io:
electron: Electron
firefox: Firefox
generic: Nesavita vidilo
huawei_browser: Navigilo Huawei
ie: Internet Explorer
micro_messenger: MicroMessenger
nokia: Vidilo Nokia S40 Ovi
@ -1337,6 +1583,7 @@ io:
qq: Vidilo QQ
safari: Safari
uc_browser: UC Browser
unknown_browser: Nekonocata Navigilo
weibo: Weibo
current_session: Nuna sesiono
description: "%{browser} che %{platform}"
@ -1349,8 +1596,10 @@ io:
chrome_os: ChromeOS
firefox_os: Firefox OS
ios: iOS
kai_os: KaiOS
linux: Linux
mac: macOS
unknown_platform: Nekonocata Platformo
windows: Windows
windows_mobile: Windows Mobile
windows_phone: Windows Phone
@ -1393,7 +1642,7 @@ io:
video:
one: "%{count} video"
other: "%{count} videi"
boosted_from_html: Bustesis de %{acct_link}
boosted_from_html: Repetis de %{acct_link}
content_warning: 'Kontenajaverto: %{warning}'
default_language: Sama quale intervizajlinguo
disallowed_hashtags:
@ -1408,7 +1657,7 @@ io:
direct: Posti quo povas videsar nur mencionita uzanti ne povas pinglagesar
limit: Vu ja pinglagis maxima posti
ownership: Posto di altra persono ne povas pinglagesar
reblog: Busto ne povas pinglagesar
reblog: Repeto ne povas pinglizesar
poll:
total_people:
one: "%{count} persono"
@ -1436,9 +1685,9 @@ io:
exceptions: Ecepti
explanation: Pro ke efacar posti esas nechipa procedo, co agas lente progresive kande servilo ne esas okupata. Do, vua posti forsan efacesos kurte pos oli atingas oldeslimito.
ignore_favs: Ignorez favorati
ignore_reblogs: Ignorez busti
ignore_reblogs: Ignorez repeti
interaction_exceptions: Ecepti segun interagi
interaction_exceptions_explanation: Notale, ne existas garantio ke posti efacesos se oli iras sub favorato o bustlimito pos iras super ol.
interaction_exceptions_explanation: Notale, ne existas garantio ke posti efacesos se oli iras sub la favoratala o repetala solii pos iras super oli.
keep_direct: Retenez direta mesaji
keep_direct_hint: Ne efacas irga vua direta mesaji
keep_media: Retenez posti kun mediiatachaji
@ -1462,8 +1711,9 @@ io:
'7889238': 3 monati
min_age_label: Oldeslimito
min_favs: Retenez favorizita posti mine
min_reblogs: Retenez bustita posti mine
min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto
min_favs_hint: Ne efacas irgo ek vua posti qua havas adminime ca quanto de favoriziti. Restez vakua por efacar posti senegarde la nombro de favoriziti
min_reblogs: Retenez posti repetita adminime
min_reblogs_hint: Ne efacas irgo ek vua posti qua havas adminime ca quanto de repeti. Restez vakua por efacar posti senegarde la nombro de repeti
stream_entries:
sensitive_content: Titiliva kontenajo
strikes:
@ -1564,7 +1814,10 @@ io:
seamless_external_login: Vu enirar tra externa serveso, do pasvorto e retpostoopcioni ne esas disponebla.
signed_in_as: 'Eniris quale:'
verification:
here_is_how: Yen quale
instructions_html: Kopiez e glutinez la kodexo suba en la HTML di vua retsituo. Pose adjuntez la adreso di vua retsituo en un ek la textobuxi di vua profilo per la "Modifikar profilo" pagino e konservez chanji.
verification: Verifikeso
verified_links: Vua ligili verifikata
webauthn_credentials:
add: Insertez nova sekuresklefo
create:

1
config/locales/lad.yml Normal file
View File

@ -0,0 +1 @@
lad:

View File

@ -1 +1,161 @@
---
pa:
about:
about_mastodon_html: ਭਵਿੱਖ ਦਾ ਸ਼ੋਸ਼ਲ ਨੈੱਟਵਰਕ ਹੈ। ਕੋਈ ਇਸ਼ਤਿਹਾਰ ਨਹੀਂ, ਕੋਈ ਵਪਾਰਕ ਨਿਗਰਾਨੀ ਨਹੀਂ, ਨੈਤਿਕ ਡਿਜ਼ਾਇਨ ਅਤੇ ਖਿੰਡਿਆ ਹੋਇਆ ਨੈੱਟਵਰਕ! ਮਸਟੋਡੋਨ ਨਾਲ ਆਪਣੇ ਡਾਟੇ ਨੂੰ ਆਪਣਾ ਹੀ ਰੱਖੋ!
contact_missing: ਸੈੱਟ ਨਹੀਂ ਹੈ
contact_unavailable: ਲਾਗ ਨਹੀਂ
hosted_on: "%{domain} ਉੱਤੇ ਹੋਸਟ ਕੀਤਾ ਮਸਟਾਡੋਨ"
title: ਇਸ ਬਾਰੇ
accounts:
follow: ਫ਼ਾਲੋ
following: ਫ਼ਾਲੋ ਕੀਤੇ ਜਾ ਰਹੇ
posts_tab_heading: ਪੋਸਟਾਂ
admin:
account_moderation_notes:
create: ਨੋਟ ਭੇਜੋ
accounts:
approve: ਮਨਜ਼ੂਰ
are_you_sure: ਪੱਕਾ?
avatar: ਅਵਤਾਰ
by_domain: ਡੋਮੇਨ
change_email:
changed_msg: ਈਮੇਲ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਬਦਲਿਆ ਗਿਆ!
current_email: ਮੌਜੂਦਾ ਈਮੇਲ
label: ਈਮੇਲ ਬਦਲੋ
new_email: ਨਵੀਂ ਈਮੇਲ
submit: ਈਮੇਲ ਨੂੰ ਬਦਲੋ
title: "%{username} ਲਈ ਈਮੇਲ ਨੂੰ ਬਦਲੋ"
confirm: ਤਸਦੀਕ
confirmed: ਤਸਦੀਕ ਕੀਤਾ
confirming: ਤਸਦੀਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ
custom: ਕਸਟਮ
delete: ਡਾਟੇ ਨੂੰ ਹਟਾਓ
deleted: ਹਟਾਇਆ
display_name: ਦਿਖਾਇਆ ਜਾਣ ਵਾਲਾ ਨਾਂ
domain: ਡੋਮੇਨ
moderation:
all: ਸਭ
suspended: ਸਸਪੈਂਡ ਕੀਤਾ
title: ਖਾਤੇ
username: ਵਰਤੋਂਕਾਰ-ਨਾਂ
ip_blocks:
delete: ਹਟਾਓ
expires_in:
'1209600': 2 ਹਫ਼ਤੇ
'15778476': 6 ਮਹੀਨੇ
'2629746': 1 ਮਹੀਨਾ
'31556952': 1 ਸਾਲ
'86400': 1 ਦਿਨ
'94670856': 3 ਸਾਲ
relays:
enable: ਸਮਰੱਥ
enabled: ਸਮਰੱਥ ਹੈ
save_and_enable: ਸੰਭਾਲੋ ਅਤੇ ਸਮਰੱਥ ਕਰੋ
reports:
are_you_sure: ਪੱਕਾ?
cancel: ਰੱਦ ਕਰੋ
comment:
none: ਕੋਈ ਨਹੀਂ
notes:
delete: ਹਟਾਓ
settings:
about:
title: ਇਸ ਬਾਰੇ
statuses:
deleted: ਹਟਾਏ
favourites: ਮਨਪਸੰਦ
history: ਵਰਜ਼ਨ ਅਤੀਤ
in_reply_to: ਇਸ ਨੂੰ ਜਵਾਬ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ
language: ਭਾਸ਼ਾ
media:
title: ਮੀਡੀਆ
metadata: ਮੇਟਾਡਾਟਾ
webhooks:
delete: ਹਟਾਓ
disable: ਅਸਮਰੱਥ
disabled: ਅਸਮਰੱਥ ਹੈ
enable: ਸਮਰੱਥ
application_mailer:
salutation: "%{name},"
applications:
logout: ਲਾਗ ਆਉਟ
your_token: ਤੁਹਾਡਾ ਪਹੁੰਚ ਟੋਕਨ
auth:
apply_for_account: ਖਾਤੇ ਲਈ ਬੇਨਤੀ
confirmations:
login_link: ਲਾਗ ਇਨ
welcome_title: "%{name}, ਜੀ ਆਇਆਂ ਨੂੰ!"
delete_account: ਖਾਤੇ ਨੂੰ ਹਟਾਓ
forgot_password: ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?
log_in_with: ਇਸ ਨਾਲ ਲਾਗਇਨ ਕਰੋ
login: ਲਾਗ ਇਨ
logout: ਲਾਗ ਆਉਟ
rules:
accept: ਮਨਜ਼ੂਰ
back: ਪਿੱਛੇ
challenge:
confirm: ਜਾਰੀ ਰੱਖੋ
date:
formats:
default: "%d %b %Y"
with_month_name: "%d %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}ਘੰ"
about_x_months: "%{count}ਮਹੀ"
about_x_years: "%{count}ਸਾ"
almost_x_years: "%{count}ਸ"
half_a_minute: ਹੁਣੇ ਹੀ
less_than_x_minutes: "%{count}ਮਿੰ"
less_than_x_seconds: ਹੁਣੇ ਹੀ
over_x_years: "%{count}ਸਾ"
x_days: "%{count}ਦਿ"
x_minutes: "%{count}ਮਿੰ"
deletes:
proceed: ਖਾਤੇ ਨੂੰ ਹਟਾਓ
disputes:
strikes:
title: "%{date} ਨੂੰ %{action}"
exports:
archive_takeout:
date: ਤਾਰੀਖ
filters:
contexts:
account: ਪਰੋਫਾਈਲ
home: ਹੋਮ ਅਤੇ ਸੂਚੀਆਂ
notifications: ਨੋਟੀਫਿਕੇਸ਼ਨ
thread: ਗੱਲਾਂਬਾਤਾਂ
index:
delete: ਹਟਾਓ
generic:
all: ਸਭ
copy: ਕਾਪੀ ਕਰੋ
delete: ਹਟਾਓ
today: ਅੱਜ
invites:
expires_in:
'43200': 12 ਘੰਟੇ
'604800': 1 ਹਫਤਾ
'86400': 1 ਦਿਨ
expires_in_prompt: ਕਦੇ ਨਹੀਂ
login_activities:
authentication_methods:
password: ਪਾਸਵਰਡ
notification_mailer:
follow:
subject: "%{name} ਹੁਣ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਦੇ ਹਨ"
title: ਨਵੇਂ ਫ਼ਾਲੋਅਰ
follow_request:
body: "%{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ"
mention:
action: ਜਵਾਬ ਦਿਓ
number:
human:
decimal_units:
format: "%n%u"
units:
billion: ਬਿ
million: ਮਿ
otp_authentication:
enable: ਸਮਰੱਥ
setup: ਸੈਟ ਅੱਪ

View File

@ -0,0 +1 @@
ia:

View File

@ -0,0 +1,23 @@
---
ie:
simple_form:
hints:
account:
unlocked: Persones va posser sequer te sin petir aprobation. Desselecte si tu vole manualmen tractar petitiones de sequer e decider ca acceptar o rejecter nov sequitores.
announcement:
all_day: Si ti-ci es marcat, solmen li dates del periode de témpor va esser monstrat
ends_at: Ínobligatori. Li proclamation va esser despublicat automaticmen ye ti-ci témpor
scheduled_at: Lassar vacui por publicar li proclamation strax
starts_at: Ínobligatori. In li casu que tui proclamation es ligat a un specific periode de témpor
text: Tu posse usar post-sintaxe. Ples considerar li spacie quel li proclamation va plenar sur li ecran del usator
form_admin_settings:
bootstrap_timeline_accounts: Ti-ci contos va esser pinglat al parte superiori del recomandationes por nov usatores.
labels:
announcement:
all_day: Eveniment del tot die
ends_at: Fine del eveniment
scheduled_at: Planar publication
starts_at: Comense del eveniment
text: Proclamation
notification_emails:
follow_request: Alqui petit sequer te

View File

@ -2,6 +2,14 @@
io:
simple_form:
hints:
account:
discoverable: Vua publika posti e profilo povas remarkesar o rekomendesar en diferanta parti di Mastodon e vua profilo povas sugestesar ad altra uzanti.
display_name: Vua tota nomo o vua gaya nomo.
fields: Vua retsituo, pronomi, evo, irgo quan vu volas.
indexable: Vua posta publika povos aparar en rezultaji di serchi che Mastodon. Personi qui interagis kun vua posti povos serchar oli irgakaze.
note: 'Vu povas @mencionar altra personi o #hashtagi.'
show_collections: Personi povos navigar tra vua sequati e sequanti. Personi quin vu sequas, vidos ke vu sequas li irgakaze.
unlocked: Personi povos sequar vu sen demandar aprobo. Deselektez se vu volas revuar sequadodemandi e selektez aceptar o refuzar nova sequati.
account_alias:
acct: Partikulare pozez uzantonomo@domeno di konto quon vua volas ektransferesar
account_migration:
@ -18,6 +26,8 @@ io:
disable: Preventez uzanto de uzar olia konto ma ne efacez o celez olia kontenaji.
none: Uzez co por sendar averto a la uzanto sen eventigar irga altra ago.
sensitive: Koaktez omna mediiatachaji da ca uzanto markizesar quale sentoza.
silence: Preventez la uzanto de povar postar per publika videbleso, celez lua posti e avizi de personi qui ne sequas lu. Co klozas omna raporto kontra ca konto.
suspend: Preventez irga interago de o a ca konto e efacez lua kontenaji. Inversebla til 30 dii. Co klozas omna raporti kontra ca konto.
warning_preset_id: Neobligata. Vu povas ankore insertar kustume texto a extremajo di fixito
announcement:
all_day: Kande kontrolesas, nur tempoporteodato montresos
@ -43,7 +53,7 @@ io:
password: Uzes minime 8 litri
phrase: Parigesos ne ye textosituaciono o konteneyoaverto di posto
scopes: Quala API quon softwaro permisesas acesar. Se vu selektas alta skopo, vu ne mustas selektar individui.
setting_aggregate_reblogs: Ne montrez nova busti di posti quo recente bustesas (nova busti)
setting_aggregate_reblogs: Ne montrez nova repeti di posti qui ja repetesis recente (nur efektigas repeti recevata nove)
setting_always_send_emails: Normale retpostoavizi ne sendesas kande vu aktiva uzas Mastodon
setting_default_sensitive: Sentoza medii originala celesas e povas revelesar per klikto
setting_display_media_default: Celez medii quo markizesis quale sentoza
@ -51,25 +61,30 @@ io:
setting_display_media_show_all: Sempre montrez medii
setting_use_blurhash: Inklini esas segun kolori di celesis vidaji ma kovras irga detali
setting_use_pending_items: Celez tempolineonovi dop kliktar e ne automatike movigar niuzeto
username: Vu darfas uzar literi, nombri, e sublinei
whole_word: Kande klefvorto o fraz esas nur litera e nombra, ol nur aplikesos se ol parigesas la tota vorto
domain_allow:
domain: Ca domeno povas ganar informi de ca servilo e venanta informo de ol procedagesos e sparesos
email_domain_block:
domain: Co povas esas domennomo quo montresas che retposto o registrajo MX quon ol uzas. Oli kontrolesos kande registro.
with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos
featured_tag:
name: 'Yen kelka hashtagi quin vu uzis maxim recente:'
filters:
action: Selektez ago kande posto parigas filtrilo
actions:
hide: Komplete celez filtrita kontenajo quale ol ne existas
warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo
form_admin_settings:
activity_api_enabled: Quanto de lokale publikigita posti, aktiva uzanti e nova registri, donita semanope
backups_retention_period: Retenez igita uzantoarkivi por la diiquanto.
bootstrap_timeline_accounts: Ca konti pinglagesos a super sequorekomendi di nova uzanti.
closed_registrations_message: Montresas kande registradi klozesas
content_cache_retention_period: Posti de altra servili efacesos pos la diiquanto kande fixesas a positiva nombro. Co darfas desagesar.
content_cache_retention_period: Omna posti e repeti de altra servili efacesos pos la specigita nombro de dii. Kelka posti forsan ne esos restaurebla. Omna relata libromarki, favoriziti e repeti anke esos perdita e neposible restaurota.
custom_css: Vu povas pozar kustumizita staili en retverso di Mastodon.
mascot: Remplas montreso en avanca retintervizajo.
media_cache_retention_period: Deschargita mediifaili efacesos pos la diiquanto kande fixesas a positiva nombro, e rideschargesas irgatempe.
peers_api_enabled: Listo di domeni quin ca servilo trovis en la fediverso. Nula informo inkluzesas hike pri ka vu federas kun partikulara servilo, nur ke vua servilo savas pri lo. Co es uzata da enti qui kolektas statistiki pri federeso generale.
profile_directory: La profilcheflisto montras omna uzanti quo voluntale volas esar deskovrebla.
require_invite_text: Kande registradi bezonas manuala aprobo, ol kauzigas "Por quo vu volas juntas?" textoenpozo esar obliganta
site_contact_email: Quale personi povas kontaktar vu por legala o suportquestioni.
@ -78,11 +93,13 @@ io:
site_short_description: Kurta deskripto por helpar unala identifikar ca servilo. Qua funcionigar lu e por qua?
site_terms: Uzez vua sua privatesguidilo o ignorez por uzar la originalo. Povas strukturigesar per sintaxo di Markdown.
site_title: Quale personi vokas ca servilo se ne uzas domennomo.
status_page_url: URL di pagino ube personi povas vidar la stando di ca servilo kande la servilo ne funcionas
theme: Temo quo videsas da ekirita vizitanti e nova uzanti.
thumbnail: Cirkum 2:1 imajo montresar kun informo di ca servilo.
timeline_preview: Ekirita vizitanti videsos maxim recenta publika posti quo esas displonebla en la servilo.
trendable_by_default: Ignorez manuala kontrolar di tendencoza kontenajo. Singla kozi povas ankore efacesar de tendenci pose.
trends: Tendenci montras quala posti, hashtagi e niuzrakonti famozeskas en ca servilo.
trends_as_landing_page: Montrez populara posti a uzanti neeniriti e vizitanti vice deskriptajo pri ca servilo. Bezonas ke populari es aktivita.
form_challenge:
current_password: Vu eniras sekura areo
imports:
@ -103,6 +120,9 @@ io:
sessions:
otp: Enter the Two-factor code from your phone or use one of your recovery codes.
webauthn: Se ol esas klefo di USB, certigar ke vu insertas e se bezonesas, tushetez.
settings:
indexable: Vua profilpagino povas aparar en serchorezultaji che Google, Bing, e altri.
show_application: Vu sempre povos vidar qua apliko publikigis vua posto irgakaze.
tag:
name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla
user:
@ -119,9 +139,13 @@ io:
url: Ibe eventi sendesos
labels:
account:
discoverable: Inkluzar profilo e posti en trovado-algoritmi
fields:
name: Etiketo
value: Kontenajo
indexable: Inkluzar publika posti en serchorezultaji
show_collections: Montrar sequati e sequanti en la profilo
unlocked: Automate aceptar nova sequanti
account_alias:
acct: Nomo di olda konto
account_migration:
@ -175,10 +199,10 @@ io:
password: Pasvorto
phrase: Klefvorto o frazo
setting_advanced_layout: Aktivigez avancata retintervizajo
setting_aggregate_reblogs: Grupbusti en tempolinei
setting_aggregate_reblogs: Grupigar repeti en tempolinei
setting_always_send_emails: Sempre sendez retpostoavizi
setting_auto_play_gif: Automate pleez animigita GIFi
setting_boost_modal: Montrez konfirmdialogo ante bustar
setting_boost_modal: Montrez konfirmdialogo ante repetar
setting_default_language: Postolinguo
setting_default_privacy: Videbleso di la mesaji
setting_default_sensitive: Sempre markizez medii quale sentoza
@ -213,6 +237,7 @@ io:
hide: Tote celez
warn: Celez kun averto
form_admin_settings:
activity_api_enabled: Publikigez rezumstatistiko pri uzantoaktiveso en API
backups_retention_period: Uzantoarkivretendurtempo
bootstrap_timeline_accounts: Sempre rekomendez ca konti a nova uzanti
closed_registrations_message: Kustumizita mesajo kande registradi ne esas disponebla
@ -220,6 +245,7 @@ io:
custom_css: Kustumizita CSS
mascot: Kustumizita reprezentimajo (oldo)
media_cache_retention_period: Mediimemorajretendurtempo
peers_api_enabled: Publikigez listo di deskovrita servili en API
profile_directory: Aktivigez profilcheflisto
registrations_mode: Qua povas registragar
require_invite_text: Mustez pozar motivo por juntar
@ -231,11 +257,13 @@ io:
site_short_description: Servildeskripto
site_terms: Privatesguidilo
site_title: Servilnomo
status_page_url: URL dil stando-pagino
theme: Originala temo
thumbnail: Servilimajeto
timeline_preview: Permisez neyurizita aceso a publika tempolineo
trendable_by_default: Permisez tendenci sen bezonar kontrolo
trends: Aktivigez tendenci
trends_as_landing_page: Uzar populari quale la iniciala pagino
interactions:
must_be_follower: Celar la savigi da homi, qui ne sequas tu
must_be_following: Celar la savigi da homi, quin tu ne sequas
@ -260,11 +288,20 @@ io:
follow_request: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
mention: Sendar retpost-mesajo, kande ulu mencionas tu
pending_account: Nova konto bezonas kontrolo
reblog: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
reblog: Ulu repetis vua posto
report: Nova raport sendesas
software_updates:
all: Notifikar pri omna aktualigi
critical: Notifikar pri nur urjanta aktualigi
label: Nova Mastodon-versiono es disponebla
none: Nultempe notifikar pri aktualigi (ne rekomendata)
patch: Notifikar pri problemosolvanta aktualigi
trending_tag: Nova tendenco bezonas kontrolo
rule:
text: Regulo
settings:
indexable: Inkluzar profilopagino en serchili
show_application: Montrar la apliko de qua vu sendis posto
tag:
listable: Permisez ca hashtago aparar en trovaji e sugestaji
name: Hashtago
@ -272,6 +309,7 @@ io:
usable: Permisez posti uzar ca hashtago
user:
role: Rolo
time_zone: Klokozono
user_role:
color: Insignokoloro
highlighted: Montrez rolo quale insigno en uzantoprofili

View File

@ -0,0 +1 @@
lad:

View File

@ -119,6 +119,7 @@ sk:
reject: Zamietni
rejected_msg: Úspešne zamietnutá prihláška %{username}
remote_suspension_irreversible: Údaje tohto účtu boli nenávratne zmazané.
remote_suspension_reversible_hint_html: Účet bol pozastavený na ich serveri a údaje budú úplne odstránené dňa %{date}. Dovtedy môže vzdialený server účet obnoviť bez akýchkoľvek nepriaznivých účinkov. Ak chceš odstrániť všetky údaje účtu ihneď, môžeš tak urobiť nižšie.
remove_avatar: Vymaž avatar
remove_header: Vymaž záhlavie
removed_avatar_msg: Úspešne odstránený obrázok avatara %{username}

View File

@ -1273,7 +1273,7 @@ zh-TW:
other: 選取 %{count} 個符合您搜尋的項目。
today: 今天
validation_errors:
other: 恩...似乎發生了點錯誤?請檢查以下 %{count} 項錯誤
other: 恩...似乎不太對勁耶?請檢查以下 %{count} 項錯誤
imports:
errors:
empty: 空的 CSV 檔案
@ -1805,7 +1805,7 @@ zh-TW:
title: "%{name} 誠摯歡迎您的加入!"
users:
follow_limit_reached: 您無法跟隨多於 %{limit} 個人
go_to_sso_account_settings: 前往您的身分識別提供者IdP之帳號設定
go_to_sso_account_settings: 前往您的身分提供商 (identity provider) 之帳號設定
invalid_otp_token: 兩階段認證碼不正確
otp_lost_help_html: 如果您無法存取這兩者,您可以透過 %{email} 與我們聯繫
seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。

View File

@ -52,7 +52,7 @@ Rails.application.routes.draw do
get 'health', to: 'health#show'
authenticate :user, lambda { |u| u.role&.can?(:view_devops) } do
authenticate :user, ->(user) { user.role&.can?(:view_devops) } do
mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq
mount PgHero::Engine, at: 'pghero', as: :pghero
end
@ -106,10 +106,10 @@ Rails.application.routes.draw do
}
# rubocop:disable Style/FormatStringToken - those do not go through the usual formatting functions and are not safe to correct
get '/users/:username', to: redirect_with_vary('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/following', to: redirect_with_vary('/@%{username}/following'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/followers', to: redirect_with_vary('/@%{username}/followers'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/statuses/:id', to: redirect_with_vary('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username', to: redirect_with_vary('/@%{username}'), constraints: ->(req) { req.format.nil? || req.format.html? }
get '/users/:username/following', to: redirect_with_vary('/@%{username}/following'), constraints: ->(req) { req.format.nil? || req.format.html? }
get '/users/:username/followers', to: redirect_with_vary('/@%{username}/followers'), constraints: ->(req) { req.format.nil? || req.format.html? }
get '/users/:username/statuses/:id', to: redirect_with_vary('/@%{username}/%{id}'), constraints: ->(req) { req.format.nil? || req.format.html? }
# rubocop:enable Style/FormatStringToken
get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }

View File

@ -80,7 +80,7 @@ class MoveUserSettings < ActiveRecord::Migration[6.1]
end
end
user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
user.update_column('settings', Oj.dump(user_settings))
end
end
end

View File

@ -254,7 +254,7 @@ module Mastodon::CLI
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse
ref_user = users.shift
say "Multiple users registered with e-mail address #{ref_user.email}.", :yellow
say "e-mail will be disabled for the following accounts: #{user.map { |user| user.account.acct }.join(', ')}", :yellow
say "e-mail will be disabled for the following accounts: #{users.map { |user| user.account.acct }.join(', ')}", :yellow
say 'Please reach out to them and set another address with `tootctl account modify` or delete them.', :yellow
users.each_with_index do |user, index|

View File

@ -42,7 +42,13 @@ module Mastodon::CLI
pool = Concurrent::FixedThreadPool.new(options[:concurrency], max_queue: options[:concurrency] * 10)
importers = indices.index_with { |index| "Importer::#{index.name}Importer".constantize.new(batch_size: options[:batch_size], executor: pool) }
progress = ProgressBar.create(total: nil, format: '%t%c/%u |%b%i| %e (%r docs/s)', autofinish: false)
progress = ProgressBar.create(
{
total: nil,
format: '%t%c/%u |%b%i| %e (%r docs/s)',
autofinish: false,
}.merge(progress_output_options)
)
Chewy::Stash::Specification.reset! if options[:reset_chewy]
@ -116,5 +122,9 @@ module Mastodon::CLI
say('Cannot run with this batch_size setting, must be at least 1', :red)
exit(1)
end
def progress_output_options
Rails.env.test? ? { output: ProgressBar::Outputs::Null } : {}
end
end
end

View File

@ -204,7 +204,7 @@
"lint-staged": "^15.0.0",
"prettier": "^3.0.0",
"react-test-renderer": "^18.2.0",
"stylelint": "^15.10.1",
"stylelint": "^16.0.2",
"stylelint-config-standard-scss": "^12.0.0",
"typescript": "^5.0.4",
"webpack-dev-server": "^3.11.3",

View File

@ -123,7 +123,7 @@ RSpec.describe ActivityPub::RepliesController do
end
it 'uses ids for remote toots' do
remote_replies = page_json[:items].select { |x| !x.is_a?(Hash) }
remote_replies = page_json[:items].reject { |x| x.is_a?(Hash) }
expect(remote_replies.all? { |item| item.is_a?(String) && !ActivityPub::TagManager.instance.local_uri?(item) }).to be true
end

View File

@ -5,7 +5,7 @@ require 'rails_helper'
describe EmojisController do
render_views
let(:emoji) { Fabricate(:custom_emoji) }
let(:emoji) { Fabricate(:custom_emoji, shortcode: 'coolcat') }
describe 'GET #show' do
let(:response) { get :show, params: { id: emoji.id, format: :json } }

View File

@ -194,60 +194,49 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
add_webauthn_credential(user)
end
context 'when creation succeeds' do
it 'adds a new credential to user credentials and does not change webauthn_id', :aggregate_failures do
controller.session[:webauthn_challenge] = challenge
expect do
post :create, params: { credential: new_webauthn_credential, nickname: nickname }
end.to change { user.webauthn_credentials.count }.by(1)
.and not_change(user, :webauthn_id)
expect(response).to have_http_status(200)
end
end
context 'when the nickname is already used' do
it 'fails' do
controller.session[:webauthn_challenge] = challenge
post :create, params: { credential: new_webauthn_credential, nickname: 'USB Key' }
expect(response).to have_http_status(422)
expect(flash[:error]).to be_present
end
end
context 'when the credential already exists' do
before do
user2 = Fabricate(:user)
public_key_credential = WebAuthn::Credential.from_create(new_webauthn_credential)
Fabricate(:webauthn_credential,
user_id: user2.id,
external_id: public_key_credential.id,
public_key: public_key_credential.public_key)
end
it 'fails' do
controller.session[:webauthn_challenge] = challenge
it 'adds a new credential to user credentials and does not change webauthn_id when creation succeeds', :aggregate_failures do
controller.session[:webauthn_challenge] = challenge
expect do
post :create, params: { credential: new_webauthn_credential, nickname: nickname }
end.to change { user.webauthn_credentials.count }.by(1)
.and not_change(user, :webauthn_id)
expect(response).to have_http_status(422)
expect(flash[:error]).to be_present
end
expect(response).to have_http_status(200)
end
it 'fails when the nickname is already used' do
controller.session[:webauthn_challenge] = challenge
post :create, params: { credential: new_webauthn_credential, nickname: 'USB Key' }
expect(response).to have_http_status(422)
expect(flash[:error]).to be_present
end
it 'fails when the credential already exists' do
public_key_credential = WebAuthn::Credential.from_create(new_webauthn_credential)
Fabricate(:webauthn_credential,
user_id: Fabricate(:user).id,
external_id: public_key_credential.id,
public_key: public_key_credential.public_key)
controller.session[:webauthn_challenge] = challenge
post :create, params: { credential: new_webauthn_credential, nickname: nickname }
expect(response).to have_http_status(422)
expect(flash[:error]).to be_present
end
end
context 'when user have not enabled webauthn' do
context 'when creation succeeds' do
it 'creates a webauthn credential' do
controller.session[:webauthn_challenge] = challenge
context 'when user have not enabled webauthn and creation succeeds' do
it 'creates a webauthn credential' do
controller.session[:webauthn_challenge] = challenge
expect do
post :create, params: { credential: new_webauthn_credential, nickname: nickname }
end.to change { user.webauthn_credentials.count }.by(1)
end
expect do
post :create, params: { credential: new_webauthn_credential, nickname: nickname }
end.to change { user.webauthn_credentials.count }.by(1)
end
end
end
@ -292,15 +281,13 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
add_webauthn_credential(user)
end
context 'when deletion succeeds' do
it 'redirects to 2FA methods list and shows flash success and deletes the credential', :aggregate_failures do
expect do
delete :destroy, params: { id: user.webauthn_credentials.take.id }
end.to change { user.webauthn_credentials.count }.by(-1)
it 'redirects to 2FA methods list and shows flash success and deletes the credential when deletion succeeds', :aggregate_failures do
expect do
delete :destroy, params: { id: user.webauthn_credentials.take.id }
end.to change { user.webauthn_credentials.count }.by(-1)
expect(response).to redirect_to settings_two_factor_authentication_methods_path
expect(flash[:success]).to be_present
end
expect(response).to redirect_to settings_two_factor_authentication_methods_path
expect(flash[:success]).to be_present
end
end

View File

@ -0,0 +1,6 @@
# frozen_string_literal: true
Fabricator(:announcement_mute) do
announcement { Fabricate.build(:announcement) }
account { Fabricate.build(:account) }
end

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
Fabricator(:announcement_reaction) do
account { Fabricate.build(:account) }
announcement { Fabricate.build(:announcement) }
name { Fabricate(:custom_emoji).shortcode }
end

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
Fabricator(:custom_emoji) do
shortcode 'coolcat'
shortcode { sequence(:shortcode) { |i| "code_#{i}" } }
domain nil
image { Rails.root.join('spec', 'fixtures', 'files', 'emojo.png').open }
end

View File

@ -77,7 +77,8 @@ describe Mastodon::CLI::Accounts do
it_behaves_like 'a new user with given email address and username'
it 'creates a new user with confirmed status' do
subject
expect { subject }
.to output_results('New password')
user = User.find_by(email: options[:email])
@ -95,7 +96,8 @@ describe Mastodon::CLI::Accounts do
it_behaves_like 'a new user with given email address and username'
it 'creates a new user with approved status' do
subject
expect { subject }
.to output_results('New password')
user = User.find_by(email: options[:email])
@ -111,7 +113,8 @@ describe Mastodon::CLI::Accounts do
it_behaves_like 'a new user with given email address and username'
it 'creates a new user and assigns the specified role' do
subject
expect { subject }
.to output_results('New password')
role = User.find_by(email: options[:email])&.role
@ -148,7 +151,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { email: 'tootctl_new@example.com', reattach: true, force: true } }
it 'reattaches the account to the new user and deletes the previous user' do
subject
expect { subject }
.to output_results('New password')
user = Account.find_local('tootctl_username')&.user
@ -220,7 +224,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { role: default_role.name } }
it "updates the user's role to the specified role" do
subject
expect { subject }
.to output_results('OK')
role = user.reload.role
@ -235,7 +240,8 @@ describe Mastodon::CLI::Accounts do
let(:user) { Fabricate(:user, role: role) }
it "removes the user's role successfully" do
subject
expect { subject }
.to output_results('OK')
role = user.reload.role
@ -248,13 +254,15 @@ describe Mastodon::CLI::Accounts do
let(:options) { { email: 'new_email@email.com' } }
it "sets the user's unconfirmed email to the provided email address" do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.unconfirmed_email).to eq(options[:email])
end
it "does not update the user's original email address" do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.email).to eq('old_email@email.com')
end
@ -264,13 +272,15 @@ describe Mastodon::CLI::Accounts do
let(:options) { { email: 'new_email@email.com', confirm: true } }
it "updates the user's email address to the provided email" do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.email).to eq(options[:email])
end
it "sets the user's email address as confirmed" do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.confirmed?).to be(true)
end
@ -282,7 +292,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { confirm: true } }
it "confirms the user's email address" do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.confirmed?).to be(true)
end
@ -297,7 +308,9 @@ describe Mastodon::CLI::Accounts do
end
it 'approves the user' do
expect { subject }.to change { user.reload.approved }.from(false).to(true)
expect { subject }
.to output_results('OK')
.and change { user.reload.approved }.from(false).to(true)
end
end
@ -306,7 +319,9 @@ describe Mastodon::CLI::Accounts do
let(:options) { { disable: true } }
it 'disables the user' do
expect { subject }.to change { user.reload.disabled }.from(false).to(true)
expect { subject }
.to output_results('OK')
.and change { user.reload.disabled }.from(false).to(true)
end
end
@ -315,7 +330,9 @@ describe Mastodon::CLI::Accounts do
let(:options) { { enable: true } }
it 'enables the user' do
expect { subject }.to change { user.reload.disabled }.from(true).to(false)
expect { subject }
.to output_results('OK')
.and change { user.reload.disabled }.from(true).to(false)
end
end
@ -335,7 +352,9 @@ describe Mastodon::CLI::Accounts do
let(:options) { { disable_2fa: true } }
it 'disables the two-factor authentication for the user' do
expect { subject }.to change { user.reload.otp_required_for_login }.from(true).to(false)
expect { subject }
.to output_results('OK')
.and change { user.reload.otp_required_for_login }.from(true).to(false)
end
end
@ -385,7 +404,8 @@ describe Mastodon::CLI::Accounts do
let(:arguments) { [account.username] }
it 'deletes the specified user successfully' do
subject
expect { subject }
.to output_results('Deleting')
expect(delete_account_service).to have_received(:call).with(account, reserve_email: false).once
end
@ -415,7 +435,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { email: account.user.email } }
it 'deletes the specified user successfully' do
subject
expect { subject }
.to output_results('Deleting')
expect(delete_account_service).to have_received(:call).with(account, reserve_email: false).once
end
@ -457,7 +478,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { all: true } }
it 'approves all pending registrations' do
subject
expect { subject }
.to output_results('OK')
expect(User.pluck(:approved).all?(true)).to be(true)
end
@ -468,7 +490,8 @@ describe Mastodon::CLI::Accounts do
let(:options) { { number: 2 } }
it 'approves the earliest n pending registrations but not the remaining ones' do
subject
expect { subject }
.to output_results('OK')
expect(n_earliest_pending_registrations.all?(&:approved?)).to be(true)
expect(pending_registrations.all?(&:approved?)).to be(false)
@ -498,7 +521,7 @@ describe Mastodon::CLI::Accounts do
it 'approves all users and does not raise any error' do
expect { subject }
.to_not raise_error
.to output_results('OK')
expect(User.pluck(:approved).all?(true)).to be(true)
end
end
@ -510,7 +533,8 @@ describe Mastodon::CLI::Accounts do
let(:arguments) { [user.account.username] }
it 'approves the specified user successfully' do
subject
expect { subject }
.to output_results('OK')
expect(user.reload.approved?).to be(true)
end
@ -655,7 +679,8 @@ describe Mastodon::CLI::Accounts do
allow(remote_account_example_com).to receive(:reset_avatar!)
allow(account_example_net).to receive(:reset_avatar!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(remote_account_example_com).to have_received(:reset_avatar!).once
@ -665,7 +690,8 @@ describe Mastodon::CLI::Accounts do
it 'does not refresh avatar for local accounts' do
allow(local_account).to receive(:reset_avatar!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(local_account).to_not have_received(:reset_avatar!)
@ -675,7 +701,8 @@ describe Mastodon::CLI::Accounts do
allow(remote_account_example_com).to receive(:reset_header!)
allow(account_example_net).to receive(:reset_header!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(remote_account_example_com).to have_received(:reset_header!).once
@ -685,7 +712,8 @@ describe Mastodon::CLI::Accounts do
it 'does not refresh the header for local accounts' do
allow(local_account).to receive(:reset_header!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(local_account).to_not have_received(:reset_header!)
@ -706,7 +734,8 @@ describe Mastodon::CLI::Accounts do
allow(remote_account_example_com).to receive(:reset_avatar!)
allow(account_example_net).to receive(:reset_avatar!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(local_account).to_not have_received(:reset_avatar!)
@ -719,7 +748,8 @@ describe Mastodon::CLI::Accounts do
allow(remote_account_example_com).to receive(:reset_header!)
allow(account_example_net).to receive(:reset_header!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(local_account).to_not have_received(:reset_header!)
@ -752,7 +782,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_avatar!)
allow(account_example_com_b).to receive(:reset_avatar!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK')
expect(account_example_com_a).to have_received(:reset_avatar!).once
expect(account_example_com_b).to have_received(:reset_avatar!).once
@ -761,7 +792,8 @@ describe Mastodon::CLI::Accounts do
it 'does not reset the avatar for unspecified accounts' do
allow(account_example_net).to receive(:reset_avatar!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK')
expect(account_example_net).to_not have_received(:reset_avatar!)
end
@ -770,7 +802,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_header!)
allow(account_example_com_b).to receive(:reset_header!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK')
expect(account_example_com_a).to have_received(:reset_header!).once
expect(account_example_com_b).to have_received(:reset_header!).once
@ -779,7 +812,8 @@ describe Mastodon::CLI::Accounts do
it 'does not reset the header for unspecified accounts' do
allow(account_example_net).to receive(:reset_header!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK')
expect(account_example_net).to_not have_received(:reset_header!)
end
@ -812,7 +846,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_avatar!)
allow(account_example_com_b).to receive(:reset_avatar!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK (DRY RUN)')
expect(account_example_com_a).to_not have_received(:reset_avatar!)
expect(account_example_com_b).to_not have_received(:reset_avatar!)
@ -822,7 +857,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_header!)
allow(account_example_com_b).to receive(:reset_header!)
cli.refresh(*arguments)
expect { cli.refresh(*arguments) }
.to output_results('OK (DRY RUN)')
expect(account_example_com_a).to_not have_received(:reset_header!)
expect(account_example_com_b).to_not have_received(:reset_header!)
@ -848,7 +884,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_avatar!)
allow(account_example_com_b).to receive(:reset_avatar!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(account_example_com_a).to have_received(:reset_avatar!).once
@ -858,7 +895,8 @@ describe Mastodon::CLI::Accounts do
it 'does not refresh the avatar for accounts outside specified domain' do
allow(account_example_net).to receive(:reset_avatar!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(account_example_net).to_not have_received(:reset_avatar!)
@ -868,7 +906,8 @@ describe Mastodon::CLI::Accounts do
allow(account_example_com_a).to receive(:reset_header!)
allow(account_example_com_b).to receive(:reset_header!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope)
expect(account_example_com_a).to have_received(:reset_header!).once
@ -878,7 +917,8 @@ describe Mastodon::CLI::Accounts do
it 'does not refresh the header for accounts outside specified domain' do
allow(account_example_net).to receive(:reset_header!)
cli.refresh
expect { cli.refresh }
.to output_results('Refreshed 2 accounts')
expect(cli).to have_received(:parallelize_with_progress).with(scope).once
expect(account_example_net).to_not have_received(:reset_header!)
@ -913,7 +953,8 @@ describe Mastodon::CLI::Accounts do
old_private_key = account.private_key
old_public_key = account.public_key
subject
expect { subject }
.to output_results('OK')
account.reload
expect(account.private_key).to_not eq(old_private_key)
@ -923,7 +964,8 @@ describe Mastodon::CLI::Accounts do
it 'broadcasts the new keys for the specified account' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_in)
subject
expect { subject }
.to output_results('OK')
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_in).with(anything, account.id, anything).once
end
@ -947,7 +989,8 @@ describe Mastodon::CLI::Accounts do
old_private_keys = accounts.map(&:private_key)
old_public_keys = accounts.map(&:public_key)
subject
expect { subject }
.to output_results('rotated')
accounts.each(&:reload)
expect(accounts.map(&:private_key)).to_not eq(old_private_keys)
@ -957,7 +1000,8 @@ describe Mastodon::CLI::Accounts do
it 'broadcasts the new keys for each account' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_in)
subject
expect { subject }
.to output_results('rotated')
accounts.each do |account|
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_in).with(anything, account.id, anything).once
@ -1036,7 +1080,8 @@ describe Mastodon::CLI::Accounts do
end
it 'merges `from_account` into `to_account` and deletes `from_account`' do
subject
expect { subject }
.to output_results('OK')
expect(to_account).to have_received(:merge_with!).with(from_account).once
expect(from_account).to have_received(:destroy).once
@ -1059,7 +1104,8 @@ describe Mastodon::CLI::Accounts do
end
it 'merges "from_account" into "to_account" and deletes from_account' do
subject
expect { subject }
.to output_results('OK')
expect(to_account).to have_received(:merge_with!).with(from_account).once
expect(from_account).to have_received(:destroy)
@ -1339,7 +1385,8 @@ describe Mastodon::CLI::Accounts do
shared_examples 'a successful migration' do
it 'calls the MoveService for the last migration' do
subject
expect { subject }
.to output_results('OK')
last_migration = source_account.migrations.last
@ -1449,7 +1496,8 @@ describe Mastodon::CLI::Accounts do
end
it 'creates a migration for the specified account with the target account' do
subject
expect { subject }
.to output_results('migrated')
last_migration = source_account.migrations.last

View File

@ -78,7 +78,8 @@ describe Mastodon::CLI::IpBlocks do
it 'overwrites the existing IP block record' do
expect { subject }
.to change { blocked_ip.reload.severity }
.to output_results('Added 11')
.and change { blocked_ip.reload.severity }
.from('no_access')
.to('sign_up_requires_approval')
end
@ -189,7 +190,8 @@ describe Mastodon::CLI::IpBlocks do
let(:options) { { force: true } }
it 'removes blocks for IP ranges that cover given IP(s) and keeps other ranges' do
subject
expect { subject }
.to output_results('Removed 2')
expect(covered_ranges).to_not exist
expect(other_ranges).to exist

View File

@ -41,7 +41,8 @@ describe Mastodon::CLI::Settings do
it 'changes registrations_mode and require_invite_text' do
expect { subject }
.to change(Setting, :registrations_mode).from(nil).to('approved')
.to output_results('OK')
.and change(Setting, :registrations_mode).from(nil).to('approved')
.and change(Setting, :require_invite_text).from(false).to(true)
end
end

View File

@ -0,0 +1,210 @@
# frozen_string_literal: true
require 'rails_helper'
describe Announcement do
describe 'Scopes' do
context 'with published and unpublished records' do
let!(:published) { Fabricate(:announcement, published: true) }
let!(:unpublished) { Fabricate(:announcement, published: false, scheduled_at: 10.days.from_now) }
describe '#unpublished' do
it 'returns records with published false' do
results = described_class.unpublished
expect(results).to eq([unpublished])
end
end
describe '#published' do
it 'returns records with published true' do
results = described_class.published
expect(results).to eq([published])
end
end
end
describe '#without_muted' do
let!(:announcement) { Fabricate(:announcement) }
let(:account) { Fabricate(:account) }
let(:muted_announcement) { Fabricate(:announcement) }
before do
Fabricate(:announcement_mute, account: account, announcement: muted_announcement)
end
it 'returns the announcements not muted by the account' do
results = described_class.without_muted(account)
expect(results).to include(announcement)
expect(results).to_not include(muted_announcement)
end
end
context 'with timestamped announcements' do
let!(:adam_announcement) { Fabricate(:announcement, starts_at: 100.days.ago, scheduled_at: 10.days.ago, published_at: 10.days.ago, ends_at: 5.days.from_now) }
let!(:brenda_announcement) { Fabricate(:announcement, starts_at: 10.days.ago, scheduled_at: 100.days.ago, published_at: 10.days.ago, ends_at: 5.days.from_now) }
let!(:clara_announcement) { Fabricate(:announcement, starts_at: 10.days.ago, scheduled_at: 10.days.ago, published_at: 100.days.ago, ends_at: 5.days.from_now) }
let!(:darnelle_announcement) { Fabricate(:announcement, starts_at: 10.days.ago, scheduled_at: 10.days.ago, published_at: 10.days.ago, ends_at: 5.days.from_now, created_at: 100.days.ago) }
describe '#chronological' do
it 'orders the records correctly' do
results = described_class.chronological
expect(results).to eq(
[
adam_announcement,
brenda_announcement,
clara_announcement,
darnelle_announcement,
]
)
end
end
describe '#reverse_chronological' do
it 'orders the records correctly' do
results = described_class.reverse_chronological
expect(results).to eq(
[
darnelle_announcement,
clara_announcement,
brenda_announcement,
adam_announcement,
]
)
end
end
end
end
describe 'Validations' do
describe 'text' do
it 'validates presence of attribute' do
record = Fabricate.build(:announcement, text: nil)
expect(record).to_not be_valid
expect(record.errors[:text]).to be_present
end
end
describe 'ends_at' do
it 'validates presence when starts_at is present' do
record = Fabricate.build(:announcement, starts_at: 1.day.ago)
expect(record).to_not be_valid
expect(record.errors[:ends_at]).to be_present
end
it 'does not validate presence when starts_at is missing' do
record = Fabricate.build(:announcement, starts_at: nil)
expect(record).to be_valid
expect(record.errors[:ends_at]).to_not be_present
end
end
end
describe '#publish!' do
it 'publishes an unpublished record' do
announcement = Fabricate(:announcement, published: false, scheduled_at: 10.days.from_now)
announcement.publish!
expect(announcement).to be_published
expect(announcement.published_at).to_not be_nil
expect(announcement.scheduled_at).to be_nil
end
end
describe '#unpublish!' do
it 'unpublishes a published record' do
announcement = Fabricate(:announcement, published: true)
announcement.unpublish!
expect(announcement).to_not be_published
expect(announcement.scheduled_at).to be_nil
end
end
describe '#time_range?' do
it 'returns false when starts_at and ends_at are missing' do
record = Fabricate.build(:announcement, starts_at: nil, ends_at: nil)
expect(record.time_range?).to be(false)
end
it 'returns false when starts_at is present and ends_at is missing' do
record = Fabricate.build(:announcement, starts_at: 5.days.from_now, ends_at: nil)
expect(record.time_range?).to be(false)
end
it 'returns false when starts_at is missing and ends_at is present' do
record = Fabricate.build(:announcement, starts_at: nil, ends_at: 5.days.from_now)
expect(record.time_range?).to be(false)
end
it 'returns true when starts_at and ends_at are present' do
record = Fabricate.build(:announcement, starts_at: 5.days.from_now, ends_at: 10.days.from_now)
expect(record.time_range?).to be(true)
end
end
describe '#reactions' do
context 'with announcement_reactions present' do
let!(:account) { Fabricate(:account) }
let!(:announcement) { Fabricate(:announcement) }
let!(:announcement_reaction) { Fabricate(:announcement_reaction, announcement: announcement, created_at: 10.days.ago) }
let!(:announcement_reaction_account) { Fabricate(:announcement_reaction, announcement: announcement, created_at: 5.days.ago, account: account) }
before do
Fabricate(:announcement_reaction)
end
it 'returns the announcement reactions for the announcement' do
results = announcement.reactions
expect(results.first.name).to eq(announcement_reaction.name)
expect(results.last.name).to eq(announcement_reaction_account.name)
end
it 'returns the announcement reactions for the announcement limited to account' do
results = announcement.reactions(account)
expect(results.first.name).to eq(announcement_reaction.name)
end
end
end
describe '#statuses' do
let(:announcement) { Fabricate(:announcement, status_ids: status_ids) }
context 'with empty status_ids' do
let(:status_ids) { nil }
it 'returns empty array' do
results = announcement.statuses
expect(results).to eq([])
end
end
context 'with relevant status_ids' do
let(:status) { Fabricate(:status, visibility: :public) }
let(:direct_status) { Fabricate(:status, visibility: :direct) }
let(:status_ids) { [status.id, direct_status.id] }
it 'returns public and unlisted statuses' do
results = announcement.statuses
expect(results).to include(status)
expect(results).to_not include(direct_status)
end
end
end
end

View File

@ -59,7 +59,7 @@ RSpec.describe CustomEmoji do
describe '.from_text' do
subject { described_class.from_text(text, nil) }
let!(:emojo) { Fabricate(:custom_emoji) }
let!(:emojo) { Fabricate(:custom_emoji, shortcode: 'coolcat') }
context 'with plain text' do
let(:text) { 'Hello :coolcat:' }

View File

@ -104,7 +104,6 @@ RSpec.configure do |config|
end
config.before :each, type: :cli do
stub_stdout
stub_reset_connection_pools
end
@ -163,14 +162,6 @@ def attachment_fixture(name)
Rails.root.join('spec', 'fixtures', 'files', name).open
end
def stub_stdout
# TODO: Is there a bettery way to:
# - Avoid CLI command output being printed out
# - Allow rspec to assert things against STDOUT
# - Avoid disabling stdout for other desirable output (deprecation warnings, for example)
allow($stdout).to receive(:write)
end
def stub_reset_connection_pools
# TODO: Is there a better way to correctly run specs without stubbing this?
# (Avoids reset_connection_pools! in test env)

View File

@ -9,7 +9,7 @@ describe 'Custom Emojis' do
describe 'GET /api/v1/custom_emojis' do
before do
Fabricate(:custom_emoji, domain: nil, disabled: false, visible_in_picker: true)
Fabricate(:custom_emoji, domain: nil, disabled: false, visible_in_picker: true, shortcode: 'coolcat')
end
context 'when logged out' do

View File

@ -2,17 +2,13 @@
require 'rails_helper'
describe Api::V1::DirectoriesController do
render_views
describe 'Directories API' do
let(:user) { Fabricate(:user, confirmed_at: nil) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:follows') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:scopes) { 'read:follows' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
before do
allow(controller).to receive(:doorkeeper_token) { token }
end
describe 'GET #show' do
describe 'GET /api/v1/directories' do
context 'with no params' do
before do
local_unconfirmed_account = Fabricate(
@ -58,27 +54,32 @@ describe Api::V1::DirectoriesController do
)
domain_blocked_account.create_account_stat!
Fabricate(:account_domain_block, account: user.account, domain: 'test.example')
local_discoverable_account.create_account_stat!
eligible_remote_account.create_account_stat!
end
it 'returns the local discoverable account and the remote discoverable account' do
local_discoverable_account = Fabricate(
let(:local_discoverable_account) do
Fabricate(
:account,
domain: nil,
user: Fabricate(:user, confirmed_at: 10.days.ago, approved: true),
discoverable: true,
username: 'local_discoverable'
)
local_discoverable_account.create_account_stat!
end
eligible_remote_account = Fabricate(
let(:eligible_remote_account) do
Fabricate(
:account,
domain: 'host.example',
discoverable: true,
username: 'eligible_remote'
)
eligible_remote_account.create_account_stat!
end
get :show
it 'returns the local discoverable account and the remote discoverable account' do
get '/api/v1/directory', headers: headers
expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2)
@ -87,14 +88,17 @@ describe Api::V1::DirectoriesController do
end
context 'when asking for local accounts only' do
it 'returns only the local accounts' do
user = Fabricate(:user, confirmed_at: 10.days.ago, approved: true)
local_account = Fabricate(:account, domain: nil, user: user)
remote_account = Fabricate(:account, domain: 'host.example')
let(:user) { Fabricate(:user, confirmed_at: 10.days.ago, approved: true) }
let(:local_account) { Fabricate(:account, domain: nil, user: user) }
let(:remote_account) { Fabricate(:account, domain: 'host.example') }
before do
local_account.create_account_stat!
remote_account.create_account_stat!
end
get :show, params: { local: '1' }
it 'returns only the local accounts' do
get '/api/v1/directory', headers: headers, params: { local: '1' }
expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(1)
@ -108,7 +112,7 @@ describe Api::V1::DirectoriesController do
old_stat = Fabricate(:account_stat, last_status_at: 1.day.ago)
new_stat = Fabricate(:account_stat, last_status_at: 1.minute.ago)
get :show, params: { order: 'active' }
get '/api/v1/directory', headers: headers, params: { order: 'active' }
expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2)
@ -123,7 +127,7 @@ describe Api::V1::DirectoriesController do
travel_to 10.seconds.from_now
account_new = Fabricate(:account_stat).account
get :show, params: { order: 'new' }
get '/api/v1/directory', headers: headers, params: { order: 'new' }
expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2)

View File

@ -50,11 +50,11 @@ RSpec.describe DeleteAccountService, type: :service do
end
def delete_associated_target_records
change do
[
AccountPin.where(target_account: account),
].map(&:count)
end.from([1]).to([0])
change(account_pins_for_account, :count).from(1).to(0)
end
def account_pins_for_account
AccountPin.where(target_account: account)
end
def delete_associated_target_notifications
@ -100,28 +100,34 @@ RSpec.describe DeleteAccountService, type: :service do
it 'sends expected activities to followed and follower inboxes' do
subject
expect(a_request(:post, account.inbox_url).with(
body:
hash_including({
'type' => 'Reject',
'object' => hash_including({
'type' => 'Follow',
'actor' => account.uri,
'object' => ActivityPub::TagManager.instance.uri_for(local_follower),
}),
})
)).to have_been_made.once
expect(post_to_inbox_with_reject).to have_been_made.once
expect(post_to_inbox_with_undo).to have_been_made.once
end
expect(a_request(:post, account.inbox_url).with(
body: hash_including({
'type' => 'Undo',
'object' => hash_including({
'type' => 'Follow',
'actor' => ActivityPub::TagManager.instance.uri_for(local_follower),
'object' => account.uri,
}),
})
)).to have_been_made.once
def post_to_inbox_with_undo
a_request(:post, account.inbox_url).with(
body: hash_including({
'type' => 'Undo',
'object' => hash_including({
'type' => 'Follow',
'actor' => ActivityPub::TagManager.instance.uri_for(local_follower),
'object' => account.uri,
}),
})
)
end
def post_to_inbox_with_reject
a_request(:post, account.inbox_url).with(
body: hash_including({
'type' => 'Reject',
'object' => hash_including({
'type' => 'Follow',
'actor' => account.uri,
'object' => ActivityPub::TagManager.instance.uri_for(local_follower),
}),
})
)
end
end
end

360
yarn.lock
View File

@ -1539,7 +1539,7 @@ __metadata:
languageName: node
linkType: hard
"@csstools/css-parser-algorithms@npm:^2.3.1":
"@csstools/css-parser-algorithms@npm:^2.3.2":
version: 2.3.2
resolution: "@csstools/css-parser-algorithms@npm:2.3.2"
peerDependencies:
@ -1548,14 +1548,14 @@ __metadata:
languageName: node
linkType: hard
"@csstools/css-tokenizer@npm:^2.2.0":
"@csstools/css-tokenizer@npm:^2.2.1":
version: 2.2.1
resolution: "@csstools/css-tokenizer@npm:2.2.1"
checksum: 0c6901d291e99c567893846a47068057c2a28b3edc4219b6da589a530f55f51ddd4675f906f707b393bfe7a508ab2604bf3f75708f064db857bb277636bd5a44
languageName: node
linkType: hard
"@csstools/media-query-list-parser@npm:^2.1.4":
"@csstools/media-query-list-parser@npm:^2.1.5":
version: 2.1.5
resolution: "@csstools/media-query-list-parser@npm:2.1.5"
peerDependencies:
@ -2435,7 +2435,7 @@ __metadata:
sass-loader: "npm:^10.2.0"
stacktrace-js: "npm:^2.0.2"
stringz: "npm:^2.1.0"
stylelint: "npm:^15.10.1"
stylelint: "npm:^16.0.2"
stylelint-config-standard-scss: "npm:^12.0.0"
substring-trie: "npm:^1.0.2"
terser-webpack-plugin: "npm:^4.2.3"
@ -3255,13 +3255,6 @@ __metadata:
languageName: node
linkType: hard
"@types/minimist@npm:^1.2.2":
version: 1.2.4
resolution: "@types/minimist@npm:1.2.4"
checksum: 01403652c09de17b8c6d7d9959cb7a244deccf31e9e7a1a7011fba73fa2724c14fe935718e0fdc48dcd30403fd76a916cb991d4c0ddf229748ccc6c4920c3371
languageName: node
linkType: hard
"@types/node@npm:*":
version: 20.8.10
resolution: "@types/node@npm:20.8.10"
@ -3278,13 +3271,6 @@ __metadata:
languageName: node
linkType: hard
"@types/normalize-package-data@npm:^2.4.0":
version: 2.4.3
resolution: "@types/normalize-package-data@npm:2.4.3"
checksum: 9ad94568b53f65d0c7fffed61c74e4a7b8625b1ebbc549f1de25287c2d20e6bca9d9cdc5826e508c9d95e02a48ac69d0282121c300667071661f37090224416b
languageName: node
linkType: hard
"@types/npmlog@npm:^7.0.0":
version: 7.0.0
resolution: "@types/npmlog@npm:7.0.0"
@ -4494,13 +4480,6 @@ __metadata:
languageName: node
linkType: hard
"arrify@npm:^1.0.1":
version: 1.0.1
resolution: "arrify@npm:1.0.1"
checksum: c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab
languageName: node
linkType: hard
"arrow-key-navigation@npm:^1.2.0":
version: 1.2.0
resolution: "arrow-key-navigation@npm:1.2.0"
@ -5381,18 +5360,6 @@ __metadata:
languageName: node
linkType: hard
"camelcase-keys@npm:^7.0.0":
version: 7.0.2
resolution: "camelcase-keys@npm:7.0.2"
dependencies:
camelcase: "npm:^6.3.0"
map-obj: "npm:^4.1.0"
quick-lru: "npm:^5.1.1"
type-fest: "npm:^1.2.1"
checksum: ae86a51168643e9e8a2f2c7bfa17850729979ec3dafc5253056a7d97931cbb0e3ef5b4185e59d54b7a56c54405dee2874b0c82033498d8626e512ff9034cb05c
languageName: node
linkType: hard
"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1":
version: 5.3.1
resolution: "camelcase@npm:5.3.1"
@ -5400,7 +5367,7 @@ __metadata:
languageName: node
linkType: hard
"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0":
"camelcase@npm:^6.2.0":
version: 6.3.0
resolution: "camelcase@npm:6.3.0"
checksum: 0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710
@ -5997,15 +5964,20 @@ __metadata:
languageName: node
linkType: hard
"cosmiconfig@npm:^8.2.0":
version: 8.2.0
resolution: "cosmiconfig@npm:8.2.0"
"cosmiconfig@npm:^9.0.0":
version: 9.0.0
resolution: "cosmiconfig@npm:9.0.0"
dependencies:
import-fresh: "npm:^3.2.1"
env-paths: "npm:^2.2.1"
import-fresh: "npm:^3.3.0"
js-yaml: "npm:^4.1.0"
parse-json: "npm:^5.0.0"
path-type: "npm:^4.0.0"
checksum: 4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747
parse-json: "npm:^5.2.0"
peerDependencies:
typescript: ">=4.9.5"
peerDependenciesMeta:
typescript:
optional: true
checksum: 1c1703be4f02a250b1d6ca3267e408ce16abfe8364193891afc94c2d5c060b69611fdc8d97af74b7e6d5d1aac0ab2fb94d6b079573146bc2d756c2484ce5f0ee
languageName: node
linkType: hard
@ -6445,30 +6417,13 @@ __metadata:
languageName: node
linkType: hard
"decamelize-keys@npm:^1.1.0":
version: 1.1.1
resolution: "decamelize-keys@npm:1.1.1"
dependencies:
decamelize: "npm:^1.1.0"
map-obj: "npm:^1.0.0"
checksum: 4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d
languageName: node
linkType: hard
"decamelize@npm:^1.1.0, decamelize@npm:^1.2.0":
"decamelize@npm:^1.2.0":
version: 1.2.0
resolution: "decamelize@npm:1.2.0"
checksum: 85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2
languageName: node
linkType: hard
"decamelize@npm:^5.0.0":
version: 5.0.1
resolution: "decamelize@npm:5.0.1"
checksum: 3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3
languageName: node
linkType: hard
"decimal.js@npm:^10.4.2, decimal.js@npm:^10.4.3":
version: 10.4.3
resolution: "decimal.js@npm:10.4.3"
@ -7103,7 +7058,7 @@ __metadata:
languageName: node
linkType: hard
"env-paths@npm:^2.2.0":
"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1":
version: 2.2.1
resolution: "env-paths@npm:2.2.1"
checksum: 285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
@ -7958,6 +7913,19 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:^3.3.2":
version: 3.3.2
resolution: "fast-glob@npm:3.3.2"
dependencies:
"@nodelib/fs.stat": "npm:^2.0.2"
"@nodelib/fs.walk": "npm:^1.2.3"
glob-parent: "npm:^5.1.2"
merge2: "npm:^1.3.0"
micromatch: "npm:^4.0.4"
checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845
languageName: node
linkType: hard
"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0":
version: 2.1.0
resolution: "fast-json-stable-stringify@npm:2.1.0"
@ -8022,12 +7990,12 @@ __metadata:
languageName: node
linkType: hard
"file-entry-cache@npm:^7.0.0":
version: 7.0.1
resolution: "file-entry-cache@npm:7.0.1"
"file-entry-cache@npm:^7.0.2":
version: 7.0.2
resolution: "file-entry-cache@npm:7.0.2"
dependencies:
flat-cache: "npm:^3.1.1"
checksum: fc0e4f830777e07087f97da9a6734820fdffa2945583355433f40d9819dd97b89f16ac87c07118737a6bc3eb9cf4bd896e7b38b07f0768aefcf44da33e797363
flat-cache: "npm:^3.2.0"
checksum: 822664e35c3e295e6a8ca7ec490d8d8077017607f41f94b29922f1f49c6dd07025048e3ed528e2909a1439eba66d60f802c0774aa612cf6ee053ee4ecc16c8c5
languageName: node
linkType: hard
@ -8161,7 +8129,7 @@ __metadata:
languageName: node
linkType: hard
"flat-cache@npm:^3.0.4, flat-cache@npm:^3.1.1":
"flat-cache@npm:^3.0.4, flat-cache@npm:^3.2.0":
version: 3.2.0
resolution: "flat-cache@npm:3.2.0"
dependencies:
@ -8693,13 +8661,6 @@ __metadata:
languageName: node
linkType: hard
"hard-rejection@npm:^2.1.0":
version: 2.1.0
resolution: "hard-rejection@npm:2.1.0"
checksum: febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564
languageName: node
linkType: hard
"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2":
version: 1.0.2
resolution: "has-bigints@npm:1.0.2"
@ -8879,15 +8840,6 @@ __metadata:
languageName: node
linkType: hard
"hosted-git-info@npm:^4.0.1":
version: 4.1.0
resolution: "hosted-git-info@npm:4.1.0"
dependencies:
lru-cache: "npm:^6.0.0"
checksum: 150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07
languageName: node
linkType: hard
"hpack.js@npm:^2.1.6":
version: 2.1.6
resolution: "hpack.js@npm:2.1.6"
@ -9148,6 +9100,13 @@ __metadata:
languageName: node
linkType: hard
"ignore@npm:^5.3.0":
version: 5.3.0
resolution: "ignore@npm:5.3.0"
checksum: dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571
languageName: node
linkType: hard
"immer@npm:^9.0.21":
version: 9.0.21
resolution: "immer@npm:9.0.21"
@ -9169,7 +9128,7 @@ __metadata:
languageName: node
linkType: hard
"import-fresh@npm:^3.2.1":
"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
@ -9179,13 +9138,6 @@ __metadata:
languageName: node
linkType: hard
"import-lazy@npm:^4.0.0":
version: 4.0.0
resolution: "import-lazy@npm:4.0.0"
checksum: a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca
languageName: node
linkType: hard
"import-local@npm:^2.0.0":
version: 2.0.0
resolution: "import-local@npm:2.0.0"
@ -9238,13 +9190,6 @@ __metadata:
languageName: node
linkType: hard
"indent-string@npm:^5.0.0":
version: 5.0.0
resolution: "indent-string@npm:5.0.0"
checksum: 8ee77b57d92e71745e133f6f444d6fa3ed503ad0e1bcd7e80c8da08b42375c07117128d670589725ed07b1978065803fa86318c309ba45415b7fe13e7f170220
languageName: node
linkType: hard
"infer-owner@npm:^1.0.4":
version: 1.0.4
resolution: "infer-owner@npm:1.0.4"
@ -9506,7 +9451,7 @@ __metadata:
languageName: node
linkType: hard
"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0":
"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.9.0":
version: 2.13.1
resolution: "is-core-module@npm:2.13.1"
dependencies:
@ -9788,13 +9733,6 @@ __metadata:
languageName: node
linkType: hard
"is-plain-obj@npm:^1.1.0":
version: 1.1.0
resolution: "is-plain-obj@npm:1.1.0"
checksum: daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c
languageName: node
linkType: hard
"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4":
version: 2.0.4
resolution: "is-plain-object@npm:2.0.4"
@ -11288,20 +11226,6 @@ __metadata:
languageName: node
linkType: hard
"map-obj@npm:^1.0.0":
version: 1.0.1
resolution: "map-obj@npm:1.0.1"
checksum: ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52
languageName: node
linkType: hard
"map-obj@npm:^4.1.0":
version: 4.3.0
resolution: "map-obj@npm:4.3.0"
checksum: 1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b
languageName: node
linkType: hard
"map-visit@npm:^1.0.0":
version: 1.0.0
resolution: "map-visit@npm:1.0.0"
@ -11405,23 +11329,10 @@ __metadata:
languageName: node
linkType: hard
"meow@npm:^10.1.5":
version: 10.1.5
resolution: "meow@npm:10.1.5"
dependencies:
"@types/minimist": "npm:^1.2.2"
camelcase-keys: "npm:^7.0.0"
decamelize: "npm:^5.0.0"
decamelize-keys: "npm:^1.1.0"
hard-rejection: "npm:^2.1.0"
minimist-options: "npm:4.1.0"
normalize-package-data: "npm:^3.0.2"
read-pkg-up: "npm:^8.0.0"
redent: "npm:^4.0.0"
trim-newlines: "npm:^4.0.2"
type-fest: "npm:^1.2.2"
yargs-parser: "npm:^20.2.9"
checksum: a513849022edd5ddcc41d28c679d31978abe414d9db5bc457e95e537a4327b2910fd2f699cdd883293f9a5da8951a50939bf60fbd62f7fe12b9ddf96a84b1b27
"meow@npm:^12.1.1":
version: 12.1.1
resolution: "meow@npm:12.1.1"
checksum: a125ca99a32e2306e2f4cbe651a0d27f6eb67918d43a075f6e80b35e9bf372ebf0fc3a9fbc201cbbc9516444b6265fb3c9f80c5b7ebd32f548aa93eb7c28e088
languageName: node
linkType: hard
@ -11544,7 +11455,7 @@ __metadata:
languageName: node
linkType: hard
"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1":
"min-indent@npm:^1.0.0":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
checksum: 7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c
@ -11605,17 +11516,6 @@ __metadata:
languageName: node
linkType: hard
"minimist-options@npm:4.1.0":
version: 4.1.0
resolution: "minimist-options@npm:4.1.0"
dependencies:
arrify: "npm:^1.0.1"
is-plain-obj: "npm:^1.1.0"
kind-of: "npm:^6.0.3"
checksum: 7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54
languageName: node
linkType: hard
"minimist@npm:^1.2.0, minimist@npm:^1.2.6":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
@ -11973,18 +11873,6 @@ __metadata:
languageName: node
linkType: hard
"normalize-package-data@npm:^3.0.2":
version: 3.0.3
resolution: "normalize-package-data@npm:3.0.3"
dependencies:
hosted-git-info: "npm:^4.0.1"
is-core-module: "npm:^2.5.0"
semver: "npm:^7.3.4"
validate-npm-package-license: "npm:^3.0.1"
checksum: e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be
languageName: node
linkType: hard
"normalize-path@npm:^2.1.1":
version: 2.1.1
resolution: "normalize-path@npm:2.1.1"
@ -13184,12 +13072,12 @@ __metadata:
languageName: node
linkType: hard
"postcss-safe-parser@npm:^6.0.0":
version: 6.0.0
resolution: "postcss-safe-parser@npm:6.0.0"
"postcss-safe-parser@npm:^7.0.0":
version: 7.0.0
resolution: "postcss-safe-parser@npm:7.0.0"
peerDependencies:
postcss: ^8.3.3
checksum: 5b0997b63de6ab4afb4b718a52dd7902e465c21d1f2e516762bcb59047787459b4dc5713132f6a19c9c8c483043b20b8a380a55fb61152ee66cbffcddf3b57f0
postcss: ^8.4.31
checksum: 4217afd8ce2809e959dc365e4675f499303cc6b91f94db06c8164422822db2d3b3124df701ee2234db4127ad05619b016bfb9c2bccae9bf9cf898a396f1632c9
languageName: node
linkType: hard
@ -13242,7 +13130,7 @@ __metadata:
languageName: node
linkType: hard
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.28":
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.32":
version: 8.4.32
resolution: "postcss@npm:8.4.32"
dependencies:
@ -13565,13 +13453,6 @@ __metadata:
languageName: node
linkType: hard
"quick-lru@npm:^5.1.1":
version: 5.1.1
resolution: "quick-lru@npm:5.1.1"
checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da
languageName: node
linkType: hard
"raf@npm:^3.1.0":
version: 3.4.1
resolution: "raf@npm:3.4.1"
@ -14051,29 +13932,6 @@ __metadata:
languageName: node
linkType: hard
"read-pkg-up@npm:^8.0.0":
version: 8.0.0
resolution: "read-pkg-up@npm:8.0.0"
dependencies:
find-up: "npm:^5.0.0"
read-pkg: "npm:^6.0.0"
type-fest: "npm:^1.0.1"
checksum: cf3905ccbe5cd602f23192cc7ca65ed17561bab117eadb9aed817441d5bfc6b9a11215c2a3e9505f501d046818f3c4180dbea61fa83c42083e0b4e407d5cc745
languageName: node
linkType: hard
"read-pkg@npm:^6.0.0":
version: 6.0.0
resolution: "read-pkg@npm:6.0.0"
dependencies:
"@types/normalize-package-data": "npm:^2.4.0"
normalize-package-data: "npm:^3.0.2"
parse-json: "npm:^5.2.0"
type-fest: "npm:^1.0.1"
checksum: b51ee5eed75324f4fac34c9a40b5e4b403de4c532242be01959c9bbdb1ff9db1c6c2aefaba569622fec49d1ead866e97ba856ab145f6e11039b11f7bec1318ba
languageName: node
linkType: hard
"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6":
version: 2.3.8
resolution: "readable-stream@npm:2.3.8"
@ -14142,16 +14000,6 @@ __metadata:
languageName: node
linkType: hard
"redent@npm:^4.0.0":
version: 4.0.0
resolution: "redent@npm:4.0.0"
dependencies:
indent-string: "npm:^5.0.0"
strip-indent: "npm:^4.0.0"
checksum: a9b640c8f4b2b5b26a1a908706475ff404dd50a97d6f094bc3c59717be922622927cc7d601d4ae2857d897ad243fd979bd76d751a0481cee8be7024e5fb4c662
languageName: node
linkType: hard
"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0":
version: 1.2.0
resolution: "redis-errors@npm:1.2.0"
@ -15294,16 +15142,6 @@ __metadata:
languageName: node
linkType: hard
"spdx-correct@npm:^3.0.0":
version: 3.2.0
resolution: "spdx-correct@npm:3.2.0"
dependencies:
spdx-expression-parse: "npm:^3.0.0"
spdx-license-ids: "npm:^3.0.0"
checksum: 49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386
languageName: node
linkType: hard
"spdx-exceptions@npm:^2.1.0":
version: 2.3.0
resolution: "spdx-exceptions@npm:2.3.0"
@ -15311,7 +15149,7 @@ __metadata:
languageName: node
linkType: hard
"spdx-expression-parse@npm:^3.0.0, spdx-expression-parse@npm:^3.0.1":
"spdx-expression-parse@npm:^3.0.1":
version: 3.0.1
resolution: "spdx-expression-parse@npm:3.0.1"
dependencies:
@ -15747,15 +15585,6 @@ __metadata:
languageName: node
linkType: hard
"strip-indent@npm:^4.0.0":
version: 4.0.0
resolution: "strip-indent@npm:4.0.0"
dependencies:
min-indent: "npm:^1.0.1"
checksum: 6b1fb4e22056867f5c9e7a6f3f45922d9a2436cac758607d58aeaac0d3b16ec40b1c43317de7900f1b8dd7a4107352fa47fb960f2c23566538c51e8585c8870e
languageName: node
linkType: hard
"strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
@ -15763,13 +15592,6 @@ __metadata:
languageName: node
linkType: hard
"style-search@npm:^0.1.0":
version: 0.1.0
resolution: "style-search@npm:0.1.0"
checksum: 9e5cb735e5dc4fc2f8c61bebdf211d5352f1cf01511a64da12bb726a01e8c6948c50d357eb8fd7893d44b4e3189655bdddcf8ab338f9d508fe89a8942c650b14
languageName: node
linkType: hard
"stylehacks@npm:^6.0.0":
version: 6.0.0
resolution: "stylehacks@npm:6.0.0"
@ -15850,53 +15672,51 @@ __metadata:
languageName: node
linkType: hard
"stylelint@npm:^15.10.1":
version: 15.11.0
resolution: "stylelint@npm:15.11.0"
"stylelint@npm:^16.0.2":
version: 16.0.2
resolution: "stylelint@npm:16.0.2"
dependencies:
"@csstools/css-parser-algorithms": "npm:^2.3.1"
"@csstools/css-tokenizer": "npm:^2.2.0"
"@csstools/media-query-list-parser": "npm:^2.1.4"
"@csstools/css-parser-algorithms": "npm:^2.3.2"
"@csstools/css-tokenizer": "npm:^2.2.1"
"@csstools/media-query-list-parser": "npm:^2.1.5"
"@csstools/selector-specificity": "npm:^3.0.0"
balanced-match: "npm:^2.0.0"
colord: "npm:^2.9.3"
cosmiconfig: "npm:^8.2.0"
cosmiconfig: "npm:^9.0.0"
css-functions-list: "npm:^3.2.1"
css-tree: "npm:^2.3.1"
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.1"
fast-glob: "npm:^3.3.2"
fastest-levenshtein: "npm:^1.0.16"
file-entry-cache: "npm:^7.0.0"
file-entry-cache: "npm:^7.0.2"
global-modules: "npm:^2.0.0"
globby: "npm:^11.1.0"
globjoin: "npm:^0.1.4"
html-tags: "npm:^3.3.1"
ignore: "npm:^5.2.4"
import-lazy: "npm:^4.0.0"
ignore: "npm:^5.3.0"
imurmurhash: "npm:^0.1.4"
is-plain-object: "npm:^5.0.0"
known-css-properties: "npm:^0.29.0"
mathml-tag-names: "npm:^2.1.3"
meow: "npm:^10.1.5"
meow: "npm:^12.1.1"
micromatch: "npm:^4.0.5"
normalize-path: "npm:^3.0.0"
picocolors: "npm:^1.0.0"
postcss: "npm:^8.4.28"
postcss: "npm:^8.4.32"
postcss-resolve-nested-selector: "npm:^0.1.1"
postcss-safe-parser: "npm:^6.0.0"
postcss-safe-parser: "npm:^7.0.0"
postcss-selector-parser: "npm:^6.0.13"
postcss-value-parser: "npm:^4.2.0"
resolve-from: "npm:^5.0.0"
string-width: "npm:^4.2.3"
strip-ansi: "npm:^6.0.1"
style-search: "npm:^0.1.0"
strip-ansi: "npm:^7.1.0"
supports-hyperlinks: "npm:^3.0.0"
svg-tags: "npm:^1.0.0"
table: "npm:^6.8.1"
write-file-atomic: "npm:^5.0.1"
bin:
stylelint: bin/stylelint.mjs
checksum: 2d88b7293e308b7e418c14ba4130777b1a28b214304957f03b41a6dc8e00005266caf47479f718a6ec5e572cb52e903ca34aabf3febbe3a3ae32fff6b018d9fd
checksum: 5ec755e209beb1877ff40d50f18c1ebb05bf251925da1f98f28fb3911e4031195eb86adaf641ac5cdb01ba973f4c999bc0c6b0270d08c1d5c070adbdd9e734cf
languageName: node
linkType: hard
@ -16350,13 +16170,6 @@ __metadata:
languageName: node
linkType: hard
"trim-newlines@npm:^4.0.2":
version: 4.1.1
resolution: "trim-newlines@npm:4.1.1"
checksum: 70e60e652305efd0dda1f2bce1a5edc9bb5834a2e00d05dfde178715ec48faa8264a2bc1a7efc593b7936d03f6d42c398616329eef44b7bd5070180a02056981
languageName: node
linkType: hard
"ts-api-utils@npm:^1.0.1":
version: 1.0.3
resolution: "ts-api-utils@npm:1.0.3"
@ -16448,13 +16261,6 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^1.0.1, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2":
version: 1.4.0
resolution: "type-fest@npm:1.4.0"
checksum: a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141
languageName: node
linkType: hard
"type-fest@npm:^3.0.0":
version: 3.13.1
resolution: "type-fest@npm:3.13.1"
@ -16921,16 +16727,6 @@ __metadata:
languageName: node
linkType: hard
"validate-npm-package-license@npm:^3.0.1":
version: 3.0.4
resolution: "validate-npm-package-license@npm:3.0.4"
dependencies:
spdx-correct: "npm:^3.0.0"
spdx-expression-parse: "npm:^3.0.0"
checksum: 7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f
languageName: node
linkType: hard
"value-equal@npm:^1.0.1":
version: 1.0.1
resolution: "value-equal@npm:1.0.1"
@ -17763,8 +17559,8 @@ __metadata:
linkType: hard
"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.14.2":
version: 8.15.0
resolution: "ws@npm:8.15.0"
version: 8.15.1
resolution: "ws@npm:8.15.1"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ">=5.0.2"
@ -17773,7 +17569,7 @@ __metadata:
optional: true
utf-8-validate:
optional: true
checksum: b778a405b2589ffbf549323e2f404f1f72e372a049d332d2f0b1f33057e9fbb14a05aa474cb156e4584b418cd95edf4297c0ca5263d6519e8009064bf8e0b80d
checksum: 9964360dd5ab35c7376bd7c4295a3c8bd44ea0838c9413742548a6fb3ec371fc6c18552d5b8e76bdc21536db1909765612815bae072674b5ec69971605395a96
languageName: node
linkType: hard
@ -17857,7 +17653,7 @@ __metadata:
languageName: node
linkType: hard
"yargs-parser@npm:^20.2.1, yargs-parser@npm:^20.2.9":
"yargs-parser@npm:^20.2.1":
version: 20.2.9
resolution: "yargs-parser@npm:20.2.9"
checksum: 0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72